summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.clang-format95
-rw-r--r--.github/workflows/linux_builds.yml41
-rw-r--r--.gitignore3
-rw-r--r--core/config/project_settings.cpp7
-rw-r--r--core/config/project_settings.h1
-rw-r--r--core/input/input.cpp1
-rw-r--r--core/input/input.h1
-rw-r--r--core/io/compression.h2
-rw-r--r--core/io/logger.h1
-rw-r--r--core/math/convex_hull.cpp2
-rw-r--r--core/math/geometry_2d.h2
-rw-r--r--core/math/geometry_3d.h2
-rw-r--r--core/os/memory.h1
-rw-r--r--core/os/os.cpp9
-rw-r--r--core/string/ustring.cpp6
-rw-r--r--doc/classes/Control.xml2
-rw-r--r--doc/classes/EditorImportPlugin.xml4
-rw-r--r--doc/classes/Input.xml7
-rw-r--r--doc/classes/OS.xml4
-rw-r--r--doc/classes/ProjectSettings.xml29
-rw-r--r--doc/classes/RenderingServer.xml19
-rw-r--r--doc/classes/RichTextLabel.xml8
-rw-r--r--doc/classes/SceneTree.xml2
-rw-r--r--doc/classes/SceneTreeTimer.xml2
-rw-r--r--doc/classes/String.xml4
-rw-r--r--editor/code_editor.h2
-rw-r--r--editor/editor_data.h2
-rw-r--r--editor/editor_file_system.cpp3
-rw-r--r--editor/editor_help.h3
-rw-r--r--editor/editor_inspector.h4
-rw-r--r--editor/editor_node.h10
-rw-r--r--editor/editor_path.h1
-rw-r--r--editor/filesystem_dock.cpp2
-rw-r--r--editor/filesystem_dock.h4
-rw-r--r--editor/find_in_files.cpp2
-rw-r--r--editor/groups_editor.cpp100
-rw-r--r--editor/groups_editor.h15
-rw-r--r--editor/import/resource_importer_layered_texture.h2
-rw-r--r--editor/plugins/abstract_polygon_2d_editor.h1
-rw-r--r--editor/plugins/animation_blend_space_1d_editor.h2
-rw-r--r--editor/plugins/animation_player_editor_plugin.h2
-rw-r--r--editor/plugins/asset_library_editor_plugin.h1
-rw-r--r--editor/plugins/canvas_item_editor_plugin.h10
-rw-r--r--editor/plugins/node_3d_editor_plugin.h2
-rw-r--r--editor/plugins/resource_preloader_editor_plugin.h1
-rw-r--r--editor/plugins/script_editor_plugin.h4
-rw-r--r--editor/plugins/sprite_frames_editor_plugin.h2
-rw-r--r--editor/plugins/theme_editor_plugin.h1
-rw-r--r--editor/plugins/visual_shader_editor_plugin.cpp21
-rw-r--r--editor/plugins/visual_shader_editor_plugin.h2
-rw-r--r--editor/project_settings_editor.h2
-rw-r--r--editor/quick_open.cpp23
-rw-r--r--editor/reparent_dialog.h2
-rw-r--r--editor/scene_tree_dock.h2
-rw-r--r--editor/scene_tree_editor.h3
-rw-r--r--editor/translations/ar.po8
-rw-r--r--editor/translations/ca.po135
-rw-r--r--editor/translations/de.po42
-rw-r--r--editor/translations/es.po47
-rw-r--r--editor/translations/es_AR.po267
-rw-r--r--editor/translations/fa.po36
-rw-r--r--editor/translations/fi.po36
-rw-r--r--editor/translations/fr.po154
-rw-r--r--editor/translations/he.po6
-rw-r--r--editor/translations/ja.po132
-rw-r--r--editor/translations/pt.po90
-rw-r--r--editor/translations/pt_BR.po144
-rw-r--r--editor/translations/ru.po44
-rw-r--r--editor/translations/sv.po11
-rw-r--r--editor/translations/uk.po36
-rw-r--r--editor/translations/zh_CN.po38
-rw-r--r--main/main.cpp6
-rw-r--r--misc/dist/osx/editor.entitlements12
-rw-r--r--misc/dist/osx/editor_mono.entitlements18
-rwxr-xr-xmisc/hooks/pre-commit-clang-format6
-rwxr-xr-xmisc/scripts/compare_extension_api.py11
-rw-r--r--modules/bullet/area_bullet.h1
-rw-r--r--modules/bullet/soft_body_bullet.cpp1
-rw-r--r--modules/denoise/config.py5
-rw-r--r--modules/gdnative/nativescript/nativescript.cpp3
-rw-r--r--modules/gdnative/nativescript/nativescript.h3
-rw-r--r--modules/gdnative/pluginscript/pluginscript_instance.h2
-rw-r--r--modules/gdscript/language_server/gdscript_language_server.h2
-rw-r--r--modules/gltf/gltf_document.h2
-rw-r--r--modules/mbedtls/packet_peer_mbed_dtls.h2
-rw-r--r--modules/mbedtls/ssl_context_mbedtls.h2
-rw-r--r--modules/mbedtls/stream_peer_mbedtls.h2
-rw-r--r--modules/mono/config.py2
-rw-r--r--modules/mono/editor/GodotTools/GodotTools.IdeMessaging/Client.cs15
-rw-r--r--modules/navigation/navigation_mesh_generator.cpp2
-rw-r--r--modules/raycast/config.py2
-rw-r--r--modules/regex/config.py2
-rw-r--r--modules/theora/config.py2
-rw-r--r--modules/visual_script/visual_script_nodes.h6
-rw-r--r--platform/android/audio_driver_opensl.h4
-rw-r--r--platform/android/java/build.gradle14
-rw-r--r--platform/android/os_android.cpp2
-rw-r--r--platform/android/os_android.h1
-rw-r--r--platform/javascript/package-lock.json6
-rw-r--r--platform/linuxbsd/detect.py7
-rw-r--r--platform/osx/joypad_osx.h1
-rw-r--r--platform/uwp/os_uwp.h5
-rw-r--r--scene/2d/audio_listener_2d.h2
-rw-r--r--scene/2d/collision_object_2d.cpp4
-rw-r--r--scene/2d/collision_polygon_2d.cpp1
-rw-r--r--scene/2d/collision_shape_2d.cpp2
-rw-r--r--scene/2d/cpu_particles_2d.h7
-rw-r--r--scene/2d/mesh_instance_2d.cpp4
-rw-r--r--scene/2d/mesh_instance_2d.h1
-rw-r--r--scene/2d/navigation_agent_2d.cpp4
-rw-r--r--scene/2d/ray_cast_2d.cpp1
-rw-r--r--scene/3d/audio_listener_3d.h3
-rw-r--r--scene/3d/collision_object_3d.cpp4
-rw-r--r--scene/3d/cpu_particles_3d.h7
-rw-r--r--scene/3d/navigation_agent_3d.cpp4
-rw-r--r--scene/3d/navigation_region_3d.cpp2
-rw-r--r--scene/3d/node_3d.cpp4
-rw-r--r--scene/3d/soft_dynamic_body_3d.cpp88
-rw-r--r--scene/3d/soft_dynamic_body_3d.h15
-rw-r--r--scene/3d/sprite_3d.h6
-rw-r--r--scene/animation/animation_player.h1
-rw-r--r--scene/animation/animation_tree.h6
-rw-r--r--scene/gui/control.cpp12
-rw-r--r--scene/gui/control.h4
-rw-r--r--scene/gui/line_edit.cpp50
-rw-r--r--scene/gui/line_edit.h1
-rw-r--r--scene/gui/popup.h1
-rw-r--r--scene/gui/rich_text_label.cpp8
-rw-r--r--scene/gui/rich_text_label.h4
-rw-r--r--scene/gui/tab_bar.h1
-rw-r--r--scene/gui/text_edit.cpp46
-rw-r--r--scene/gui/tree.cpp4
-rw-r--r--scene/main/canvas_layer.cpp8
-rw-r--r--scene/main/scene_tree.h4
-rw-r--r--scene/main/viewport.cpp9
-rw-r--r--scene/resources/mesh.h1
-rw-r--r--scene/resources/shape_2d.h1
-rw-r--r--servers/audio/effects/audio_effect_limiter.h2
-rw-r--r--servers/audio/effects/audio_effect_record.h1
-rw-r--r--servers/audio/effects/audio_effect_reverb.h2
-rw-r--r--servers/physics_2d/godot_body_2d.cpp33
-rw-r--r--servers/physics_2d/godot_body_2d.h5
-rw-r--r--servers/physics_3d/godot_body_3d.cpp19
-rw-r--r--servers/physics_3d/godot_body_3d.h4
-rw-r--r--servers/physics_3d/godot_physics_server_3d.cpp2
-rw-r--r--servers/physics_3d/godot_soft_body_3d.cpp1
-rw-r--r--servers/physics_server_2d_wrap_mt.h2
-rw-r--r--servers/physics_server_3d_wrap_mt.h2
-rw-r--r--servers/rendering/renderer_rd/forward_clustered/scene_shader_forward_clustered.cpp4
-rw-r--r--servers/rendering/renderer_rd/renderer_scene_render_rd.cpp14
-rw-r--r--servers/rendering/renderer_rd/renderer_storage_rd.cpp6
-rw-r--r--servers/rendering/renderer_rd/shaders/scene_forward_lights_inc.glsl6
-rw-r--r--servers/rendering/shader_language.cpp1
-rw-r--r--servers/rendering_server.cpp9
-rw-r--r--servers/rendering_server.h1
155 files changed, 1174 insertions, 1121 deletions
diff --git a/.clang-format b/.clang-format
index 1c26421a7f..9ddb19e57c 100644
--- a/.clang-format
+++ b/.clang-format
@@ -1,31 +1,41 @@
-# Commented out parameters are those with the same value as base LLVM style
+# Commented out parameters are those with the same value as base LLVM style.
# We can uncomment them if we want to change their value, or enforce the
-# chosen value in case the base style changes (last sync: Clang 6.0.1).
+# chosen value in case the base style changes (last sync: Clang 13.0).
---
### General config, applies to all languages ###
BasedOnStyle: LLVM
AccessModifierOffset: -4
AlignAfterOpenBracket: DontAlign
-# AlignConsecutiveAssignments: false
-# AlignConsecutiveDeclarations: false
+# AlignArrayOfStructures: None
+# AlignConsecutiveMacros: None
+# AlignConsecutiveAssignments: None
+# AlignConsecutiveBitFields: None
+# AlignConsecutiveDeclarations: None
# AlignEscapedNewlines: Right
-# AlignOperands: true
+# AlignOperands: Align
AlignTrailingComments: false
+# AllowAllArgumentsOnNextLine: true
+# AllowAllConstructorInitializersOnNextLine: true
AllowAllParametersOfDeclarationOnNextLine: false
-# AllowShortBlocksOnASingleLine: false
+# AllowShortEnumsOnASingleLine: true
+# AllowShortBlocksOnASingleLine: Never
# AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: Inline
-# AllowShortIfStatementsOnASingleLine: false
+# AllowShortLambdasOnASingleLine: All
+# AllowShortIfStatementsOnASingleLine: Never
# AllowShortLoopsOnASingleLine: false
# AlwaysBreakAfterDefinitionReturnType: None
# AlwaysBreakAfterReturnType: None
# AlwaysBreakBeforeMultilineStrings: false
-# AlwaysBreakTemplateDeclarations: false
+# AlwaysBreakTemplateDeclarations: MultiLine
+# AttributeMacros:
+# - __capability
# BinPackArguments: true
# BinPackParameters: true
# BraceWrapping:
+# AfterCaseLabel: false
# AfterClass: false
-# AfterControlStatement: false
+# AfterControlStatement: Never
# AfterEnum: false
# AfterFunction: false
# AfterNamespace: false
@@ -35,13 +45,17 @@ AllowShortFunctionsOnASingleLine: Inline
# AfterExternBlock: false
# BeforeCatch: false
# BeforeElse: false
+# BeforeLambdaBody: false
+# BeforeWhile: false
# IndentBraces: false
# SplitEmptyFunction: true
# SplitEmptyRecord: true
# SplitEmptyNamespace: true
# BreakBeforeBinaryOperators: None
+# BreakBeforeConceptDeclarations: true
# BreakBeforeBraces: Attach
# BreakBeforeInheritanceComma: false
+# BreakInheritanceList: BeforeColon
BreakBeforeTernaryOperators: false
# BreakConstructorInitializersBeforeComma: false
BreakConstructorInitializers: AfterColon
@@ -53,14 +67,19 @@ ConstructorInitializerAllOnOneLineOrOnePerLine: true
ConstructorInitializerIndentWidth: 8
ContinuationIndentWidth: 8
Cpp11BracedListStyle: false
+# DeriveLineEnding: true
# DerivePointerAlignment: false
# DisableFormat: false
+# EmptyLineAfterAccessModifier: Never
+# EmptyLineBeforeAccessModifier: LogicalBlock
# ExperimentalAutoDetectBinPacking: false
# FixNamespaceComments: true
# ForEachMacros:
# - foreach
# - Q_FOREACH
# - BOOST_FOREACH
+# IfMacros:
+# - KJ_IF_MAYBE
# IncludeBlocks: Preserve
IncludeCategories:
- Regex: '".*"'
@@ -70,13 +89,21 @@ IncludeCategories:
- Regex: '^<.*'
Priority: 3
# IncludeIsMainRegex: '(Test)?$'
+# IncludeIsMainSourceRegex: ''
+# IndentAccessModifiers: false
IndentCaseLabels: true
+# IndentCaseBlocks: false
+# IndentGotoLabels: true
# IndentPPDirectives: None
+# IndentExternBlock: AfterExternBlock
+# IndentRequires: false
IndentWidth: 4
# IndentWrappedFunctionNames: false
+# InsertTrailingCommas: None
# JavaScriptQuotes: Leave
# JavaScriptWrapImports: true
KeepEmptyLinesAtTheStartOfBlocks: false
+# LambdaBodyIndentation: Signature
# MacroBlockBegin: ''
# MacroBlockEnd: ''
# MaxEmptyLinesToKeep: 1
@@ -86,38 +113,72 @@ KeepEmptyLinesAtTheStartOfBlocks: false
# PenaltyBreakComment: 300
# PenaltyBreakFirstLessLess: 120
# PenaltyBreakString: 1000
+# PenaltyBreakTemplateDeclaration: 10
# PenaltyExcessCharacter: 1000000
# PenaltyReturnTypeOnItsOwnLine: 60
+# PenaltyIndentedWhitespace: 0
# PointerAlignment: Right
-# RawStringFormats:
-# - Delimiter: pb
-# Language: TextProto
-# BasedOnStyle: google
+# PPIndentWidth: -1
+# ReferenceAlignment: Pointer
# ReflowComments: true
-# SortIncludes: true
+# ShortNamespaceLines: 1
+# SortIncludes: CaseSensitive
+# SortJavaStaticImport: Before
# SortUsingDeclarations: true
# SpaceAfterCStyleCast: false
+# SpaceAfterLogicalNot: false
# SpaceAfterTemplateKeyword: true
# SpaceBeforeAssignmentOperators: true
+# SpaceBeforeCaseColon: false
+# SpaceBeforeCpp11BracedList: false
+# SpaceBeforeCtorInitializerColon: true
+# SpaceBeforeInheritanceColon: true
# SpaceBeforeParens: ControlStatements
+# SpaceAroundPointerQualifiers: Default
+# SpaceBeforeRangeBasedForLoopColon: true
# SpaceInEmptyParentheses: false
# SpacesBeforeTrailingComments: 1
-# SpacesInAngles: false
+# SpaceInEmptyBlock: false
+# SpaceInEmptyParentheses: false
+# SpacesBeforeTrailingComments: 1
+# SpacesInAngles: Never
+# SpacesInContainerLiterals: true
+# SpacesInConditionalStatement: false
# SpacesInContainerLiterals: true
# SpacesInCStyleCastParentheses: false
+## Godot TODO: We'll want to use a min of 1, but we need to see how to fix
+## our comment capitalization at the same time.
+SpacesInLineCommentPrefix:
+ Minimum: 0
+ Maximum: -1
# SpacesInParentheses: false
# SpacesInSquareBrackets: false
+# SpaceBeforeSquareBrackets: false
+# BitFieldColonSpacing: Both
+# StatementAttributeLikeMacros:
+# - Q_EMIT
+# StatementMacros:
+# - Q_UNUSED
+# - QT_REQUIRE_VERSION
TabWidth: 4
+# UseCRLF: false
UseTab: Always
+# WhitespaceSensitiveMacros:
+# - STRINGIZE
+# - PP_STRINGIZE
+# - BOOST_PP_STRINGIZE
+# - NS_SWIFT_NAME
+# - CF_SWIFT_NAME
---
### C++ specific config ###
Language: Cpp
-Standard: Cpp11
+Standard: c++17
---
### ObjC specific config ###
Language: ObjC
-Standard: Cpp11
+# ObjCBinPackProtocolList: Auto
ObjCBlockIndentWidth: 4
+# ObjCBreakBeforeNestedBlockParam: true
# ObjCSpaceAfterProperty: false
# ObjCSpaceBeforeProtocolList: true
---
diff --git a/.github/workflows/linux_builds.yml b/.github/workflows/linux_builds.yml
index 018839b817..f6d11e2efe 100644
--- a/.github/workflows/linux_builds.yml
+++ b/.github/workflows/linux_builds.yml
@@ -34,6 +34,7 @@ jobs:
tests: true
sconsflags: use_asan=yes use_ubsan=yes
proj-test: true
+ godot-cpp-test: true
bin: "./bin/godot.linuxbsd.tools.64s"
# Skip 2GiB artifact speeding up action.
artifact: false
@@ -126,6 +127,46 @@ jobs:
VK_ICD_FILENAMES=$(pwd)/vk_swiftshader_icd.json DRI_PRIME=0 xvfb-run ${{ matrix.bin }} 40 --audio-driver Dummy --path test_project 2>&1 | tee sanitizers_log.txt || true
misc/scripts/check_ci_log.py sanitizers_log.txt
+ # Checkout godot-cpp
+ - name: Checkout godot-cpp
+ if: ${{ matrix.godot-cpp-test }}
+ uses: actions/checkout@v2
+ with:
+ repository: godotengine/godot-cpp
+ submodules: 'recursive'
+ path: 'godot-cpp'
+
+ # Check extension API
+ - name: Check for extension api updates
+ if: ${{ matrix.godot-cpp-test }}
+ run: |
+ echo "Running --dump-extension-api to create extensions api."
+ VK_ICD_FILENAMES=$(pwd)/vk_swiftshader_icd.json DRI_PRIME=0 xvfb-run ${{ matrix.bin }} --audio-driver Dummy --dump-extension-api 2>&1 > /dev/null || true
+ misc/scripts/compare_extension_api.py godot-cpp/godot-headers/extension_api.json extension_api.json
+
+ # Copy new extension API files into place
+ - name: Copy new extension API files into place
+ if: ${{ matrix.godot-cpp-test }}
+ run: |
+ cp -f extension_api.json godot-cpp/godot-headers/
+ cp -f core/extension/gdnative_interface.h godot-cpp/godot-headers/godot/
+
+ # Build godot-cpp library
+ - name: Build godot-cpp library
+ if: ${{ matrix.godot-cpp-test }}
+ run: |
+ cd godot-cpp
+ scons target=${{ matrix.target }} generate_bindings=yes -j2
+ cd ..
+
+ # Build godot-cpp test extension
+ - name: Build godot-cpp test extension
+ if: ${{ matrix.godot-cpp-test }}
+ run: |
+ cd godot-cpp/test
+ scons target=${{ matrix.target }} -j2
+ cd ../..
+
- name: Prepare artifact
if: ${{ matrix.artifact }}
run: |
diff --git a/.gitignore b/.gitignore
index 5b3414fe7e..5a8f6aec40 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,6 +5,9 @@
# Documentation generated by doxygen or from classes.xml
doc/_build/
+# Extension API dump
+extension_api.json
+
# Javascript specific
*.bc
diff --git a/core/config/project_settings.cpp b/core/config/project_settings.cpp
index 562cbbdd27..f37e7f5956 100644
--- a/core/config/project_settings.cpp
+++ b/core/config/project_settings.cpp
@@ -42,6 +42,8 @@
#include "core/os/os.h"
#include "core/variant/variant_parser.h"
+const String ProjectSettings::PROJECT_DATA_DIR_NAME_SUFFIX = "godot";
+
ProjectSettings *ProjectSettings::singleton = nullptr;
ProjectSettings *ProjectSettings::get_singleton() {
@@ -521,7 +523,8 @@ Error ProjectSettings::setup(const String &p_path, const String &p_main_pack, bo
}
// Updating the default value after the project settings have loaded.
- project_data_dir_name = GLOBAL_GET("application/config/project_data_dir_name");
+ bool use_hidden_directory = GLOBAL_GET("application/config/use_hidden_project_data_directory");
+ project_data_dir_name = (use_hidden_directory ? "." : "") + PROJECT_DATA_DIR_NAME_SUFFIX;
// Using GLOBAL_GET on every block for compressing can be slow, so assigning here.
Compression::zstd_long_distance_matching = GLOBAL_GET("compression/formats/zstd/long_distance_matching");
@@ -1094,7 +1097,7 @@ ProjectSettings::ProjectSettings() {
custom_prop_info["application/run/main_scene"] = PropertyInfo(Variant::STRING, "application/run/main_scene", PROPERTY_HINT_FILE, "*.tscn,*.scn,*.res");
GLOBAL_DEF("application/run/disable_stdout", false);
GLOBAL_DEF("application/run/disable_stderr", false);
- project_data_dir_name = GLOBAL_DEF_RST("application/config/project_data_dir_name", ".godot");
+ GLOBAL_DEF_RST("application/config/use_hidden_project_data_directory", true);
GLOBAL_DEF("application/config/use_custom_user_dir", false);
GLOBAL_DEF("application/config/custom_user_dir_name", "");
GLOBAL_DEF("application/config/project_settings_override", "");
diff --git a/core/config/project_settings.h b/core/config/project_settings.h
index 82f04b94df..ca37401751 100644
--- a/core/config/project_settings.h
+++ b/core/config/project_settings.h
@@ -42,6 +42,7 @@ class ProjectSettings : public Object {
public:
typedef Map<String, Variant> CustomMap;
+ static const String PROJECT_DATA_DIR_NAME_SUFFIX;
enum {
//properties that are not for built in values begin from this value, so builtin ones are displayed first
diff --git a/core/input/input.cpp b/core/input/input.cpp
index 296aa1f071..c3b43a4274 100644
--- a/core/input/input.cpp
+++ b/core/input/input.cpp
@@ -133,6 +133,7 @@ void Input::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_custom_mouse_cursor", "image", "shape", "hotspot"), &Input::set_custom_mouse_cursor, DEFVAL(CURSOR_ARROW), DEFVAL(Vector2()));
ClassDB::bind_method(D_METHOD("parse_input_event", "event"), &Input::parse_input_event);
ClassDB::bind_method(D_METHOD("set_use_accumulated_input", "enable"), &Input::set_use_accumulated_input);
+ ClassDB::bind_method(D_METHOD("flush_buffered_events"), &Input::flush_buffered_events);
BIND_ENUM_CONSTANT(MOUSE_MODE_VISIBLE);
BIND_ENUM_CONSTANT(MOUSE_MODE_HIDDEN);
diff --git a/core/input/input.h b/core/input/input.h
index 6819fc8eb0..f63138a875 100644
--- a/core/input/input.h
+++ b/core/input/input.h
@@ -265,7 +265,6 @@ public:
float get_joy_vibration_duration(int p_device);
uint64_t get_joy_vibration_timestamp(int p_device);
void joy_connection_changed(int p_idx, bool p_connected, String p_name, String p_guid = "");
- void parse_joypad_mapping(String p_mapping, bool p_update_existing);
Vector3 get_gravity() const;
Vector3 get_accelerometer() const;
diff --git a/core/io/compression.h b/core/io/compression.h
index cbfed74124..06f26876e5 100644
--- a/core/io/compression.h
+++ b/core/io/compression.h
@@ -54,8 +54,6 @@ public:
static int get_max_compressed_buffer_size(int p_src_size, Mode p_mode = MODE_ZSTD);
static int decompress(uint8_t *p_dst, int p_dst_max_size, const uint8_t *p_src, int p_src_size, Mode p_mode = MODE_ZSTD);
static int decompress_dynamic(Vector<uint8_t> *p_dst_vect, int p_max_dst_size, const uint8_t *p_src, int p_src_size, Mode p_mode);
-
- Compression() {}
};
#endif // COMPRESSION_H
diff --git a/core/io/logger.h b/core/io/logger.h
index f244f70e7e..48b073aa45 100644
--- a/core/io/logger.h
+++ b/core/io/logger.h
@@ -83,7 +83,6 @@ class RotatedFileLogger : public Logger {
FileAccess *file = nullptr;
- void rotate_file_without_closing();
void close_file();
void clear_old_backups();
void rotate_file();
diff --git a/core/math/convex_hull.cpp b/core/math/convex_hull.cpp
index f67035c803..684814b1ae 100644
--- a/core/math/convex_hull.cpp
+++ b/core/math/convex_hull.cpp
@@ -594,8 +594,6 @@ private:
IntermediateHull() {
}
-
- void print();
};
enum Orientation { NONE,
diff --git a/core/math/geometry_2d.h b/core/math/geometry_2d.h
index 8e5830f9b3..6010159597 100644
--- a/core/math/geometry_2d.h
+++ b/core/math/geometry_2d.h
@@ -37,8 +37,6 @@
#include "core/templates/vector.h"
class Geometry2D {
- Geometry2D();
-
public:
static real_t get_closest_points_between_segments(const Vector2 &p1, const Vector2 &q1, const Vector2 &p2, const Vector2 &q2, Vector2 &c1, Vector2 &c2) {
Vector2 d1 = q1 - p1; // Direction vector of segment S1.
diff --git a/core/math/geometry_3d.h b/core/math/geometry_3d.h
index 766689e222..6a59b34585 100644
--- a/core/math/geometry_3d.h
+++ b/core/math/geometry_3d.h
@@ -36,8 +36,6 @@
#include "core/templates/vector.h"
class Geometry3D {
- Geometry3D();
-
public:
static void get_closest_points_between_segments(const Vector3 &p1, const Vector3 &p2, const Vector3 &q1, const Vector3 &q2, Vector3 &c1, Vector3 &c2) {
// Do the function 'd' as defined by pb. I think it's a dot product of some sort.
diff --git a/core/os/memory.h b/core/os/memory.h
index f67384a17e..ac56a12330 100644
--- a/core/os/memory.h
+++ b/core/os/memory.h
@@ -42,7 +42,6 @@
#endif
class Memory {
- Memory();
#ifdef DEBUG_ENABLED
static SafeNumeric<uint64_t> mem_usage;
static SafeNumeric<uint64_t> max_usage;
diff --git a/core/os/os.cpp b/core/os/os.cpp
index 7404ffdcd5..5892f91ff3 100644
--- a/core/os/os.cpp
+++ b/core/os/os.cpp
@@ -431,6 +431,15 @@ bool OS::has_feature(const String &p_feature) {
if (p_feature == "arm") {
return true;
}
+#elif defined(__riscv)
+#if __riscv_xlen == 8
+ if (p_feature == "rv64") {
+ return true;
+ }
+#endif
+ if (p_feature == "riscv") {
+ return true;
+ }
#endif
if (_check_internal_feature_support(p_feature)) {
diff --git a/core/string/ustring.cpp b/core/string/ustring.cpp
index daeb7fbd17..397743fb6e 100644
--- a/core/string/ustring.cpp
+++ b/core/string/ustring.cpp
@@ -2137,7 +2137,7 @@ int64_t String::hex_to_int() const {
s++;
}
- if (len > 2 && s[0] == '0' && s[1] == 'x') {
+ if (len > 2 && s[0] == '0' && lower_case(s[1]) == 'x') {
s += 2;
}
@@ -2151,7 +2151,7 @@ int64_t String::hex_to_int() const {
} else if (c >= 'a' && c <= 'f') {
n = (c - 'a') + 10;
} else {
- return 0;
+ ERR_FAIL_COND_V_MSG(true, 0, "Invalid hexadecimal notation character \"" + chr(*s) + "\" in string \"" + *this + "\".");
}
// Check for overflow/underflow, with special case to ensure INT64_MIN does not result in error
bool overflow = ((hex > INT64_MAX / 16) && (sign == 1 || (sign == -1 && hex != (INT64_MAX >> 4) + 1))) || (sign == -1 && hex == (INT64_MAX >> 4) + 1 && c > '0');
@@ -2178,7 +2178,7 @@ int64_t String::bin_to_int() const {
s++;
}
- if (len > 2 && s[0] == '0' && s[1] == 'b') {
+ if (len > 2 && s[0] == '0' && lower_case(s[1]) == 'b') {
s += 2;
}
diff --git a/doc/classes/Control.xml b/doc/classes/Control.xml
index 332d171457..63e3eb7a5f 100644
--- a/doc/classes/Control.xml
+++ b/doc/classes/Control.xml
@@ -1044,7 +1044,7 @@
<member name="rect_scale" type="Vector2" setter="set_scale" getter="get_scale" default="Vector2(1, 1)">
The node's scale, relative to its [member rect_size]. Change this property to scale the node around its [member rect_pivot_offset]. The Control's [member hint_tooltip] will also scale according to this value.
[b]Note:[/b] This property is mainly intended to be used for animation purposes. Text inside the Control will look pixelated or blurry when the Control is scaled. To support multiple resolutions in your project, use an appropriate viewport stretch mode as described in the [url=https://docs.godotengine.org/en/latest/tutorials/viewports/multiple_resolutions.html]documentation[/url] instead of scaling Controls individually.
- [b]Note:[/b] If the Control node is a child of a [Container] node, the scale will be reset to [code]Vector2(1, 1)[/code] when the scene is instantiated. To set the Control's scale when it's instantiated, wait for one frame using [code]yield(get_tree(), "process_frame")[/code] then set its [member rect_scale] property.
+ [b]Note:[/b] If the Control node is a child of a [Container] node, the scale will be reset to [code]Vector2(1, 1)[/code] when the scene is instantiated. To set the Control's scale when it's instantiated, wait for one frame using [code]await get_tree().process_frame[/code] then set its [member rect_scale] property.
</member>
<member name="rect_size" type="Vector2" setter="_set_size" getter="get_size" default="Vector2(0, 0)">
The size of the node's bounding rectangle, in pixels. [Container] nodes update this property automatically.
diff --git a/doc/classes/EditorImportPlugin.xml b/doc/classes/EditorImportPlugin.xml
index 6011a5411d..cb33f159ef 100644
--- a/doc/classes/EditorImportPlugin.xml
+++ b/doc/classes/EditorImportPlugin.xml
@@ -5,7 +5,7 @@
</brief_description>
<description>
[EditorImportPlugin]s provide a way to extend the editor's resource import functionality. Use them to import resources from custom files or to provide alternatives to the editor's existing importers.
- EditorImportPlugins work by associating with specific file extensions and a resource type. See [method _get_recognized_extensions] and [method _get_resource_type]. They may optionally specify some import presets that affect the import process. EditorImportPlugins are responsible for creating the resources and saving them in the [code].godot/imported[/code] directory (see [member ProjectSettings.application/config/project_data_dir_name]).
+ EditorImportPlugins work by associating with specific file extensions and a resource type. See [method _get_recognized_extensions] and [method _get_resource_type]. They may optionally specify some import presets that affect the import process. EditorImportPlugins are responsible for creating the resources and saving them in the [code].godot/imported[/code] directory (see [member ProjectSettings.application/config/use_hidden_project_data_directory]).
Below is an example EditorImportPlugin that imports a [Mesh] from a file with the extension ".special" or ".spec":
[codeblocks]
[gdscript]
@@ -198,7 +198,7 @@
<method name="_get_save_extension" qualifiers="virtual const">
<return type="String" />
<description>
- Gets the extension used to save this resource in the [code].godot/imported[/code] directory (see [member ProjectSettings.application/config/project_data_dir_name]).
+ Gets the extension used to save this resource in the [code].godot/imported[/code] directory (see [member ProjectSettings.application/config/use_hidden_project_data_directory]).
</description>
</method>
<method name="_get_visible_name" qualifiers="virtual const">
diff --git a/doc/classes/Input.xml b/doc/classes/Input.xml
index 88e4a67615..1fded42db2 100644
--- a/doc/classes/Input.xml
+++ b/doc/classes/Input.xml
@@ -37,6 +37,13 @@
Adds a new mapping entry (in SDL2 format) to the mapping database. Optionally update already connected devices.
</description>
</method>
+ <method name="flush_buffered_events">
+ <return type="void" />
+ <description>
+ Sends all input events which are in the current buffer to the game loop. These events may have been buffered as a result of accumulated input ([method set_use_accumulated_input]) or agile input flushing ([member ProjectSettings.input_devices/buffering/agile_event_flushing]).
+ The engine will already do this itself at key execution points (at least once per frame). However, this can be useful in advanced cases where you want precise control over the timing of event handling.
+ </description>
+ </method>
<method name="get_accelerometer" qualifiers="const">
<return type="Vector3" />
<description>
diff --git a/doc/classes/OS.xml b/doc/classes/OS.xml
index 656fa61af7..15cc7b9b65 100644
--- a/doc/classes/OS.xml
+++ b/doc/classes/OS.xml
@@ -57,7 +57,7 @@
<argument index="0" name="msec" type="int" />
<description>
Delays execution of the current thread by [code]msec[/code] milliseconds. [code]msec[/code] must be greater than or equal to [code]0[/code]. Otherwise, [method delay_msec] will do nothing and will print an error message.
- [b]Note:[/b] [method delay_msec] is a [i]blocking[/i] way to delay code execution. To delay code execution in a non-blocking way, see [method SceneTree.create_timer]. Yielding with [method SceneTree.create_timer] will delay the execution of code placed below the [code]yield[/code] without affecting the rest of the project (or editor, for [EditorPlugin]s and [EditorScript]s).
+ [b]Note:[/b] [method delay_msec] is a [i]blocking[/i] way to delay code execution. To delay code execution in a non-blocking way, see [method SceneTree.create_timer]. Awaiting with [method SceneTree.create_timer] will delay the execution of code placed below the [code]await[/code] without affecting the rest of the project (or editor, for [EditorPlugin]s and [EditorScript]s).
[b]Note:[/b] When [method delay_msec] is called on the main thread, it will freeze the project and will prevent it from redrawing and registering input until the delay has passed. When using [method delay_msec] as part of an [EditorPlugin] or [EditorScript], it will freeze the editor but won't freeze the project if it is currently running (since the project is an independent child process).
</description>
</method>
@@ -66,7 +66,7 @@
<argument index="0" name="usec" type="int" />
<description>
Delays execution of the current thread by [code]usec[/code] microseconds. [code]usec[/code] must be greater than or equal to [code]0[/code]. Otherwise, [method delay_usec] will do nothing and will print an error message.
- [b]Note:[/b] [method delay_usec] is a [i]blocking[/i] way to delay code execution. To delay code execution in a non-blocking way, see [method SceneTree.create_timer]. Yielding with [method SceneTree.create_timer] will delay the execution of code placed below the [code]yield[/code] without affecting the rest of the project (or editor, for [EditorPlugin]s and [EditorScript]s).
+ [b]Note:[/b] [method delay_usec] is a [i]blocking[/i] way to delay code execution. To delay code execution in a non-blocking way, see [method SceneTree.create_timer]. Awaiting with [method SceneTree.create_timer] will delay the execution of code placed below the [code]await[/code] without affecting the rest of the project (or editor, for [EditorPlugin]s and [EditorScript]s).
[b]Note:[/b] When [method delay_usec] is called on the main thread, it will freeze the project and will prevent it from redrawing and registering input until the delay has passed. When using [method delay_usec] as part of an [EditorPlugin] or [EditorScript], it will freeze the editor but won't freeze the project if it is currently running (since the project is an independent child process).
</description>
</method>
diff --git a/doc/classes/ProjectSettings.xml b/doc/classes/ProjectSettings.xml
index eec06d6f82..c646380bee 100644
--- a/doc/classes/ProjectSettings.xml
+++ b/doc/classes/ProjectSettings.xml
@@ -221,11 +221,6 @@
The project's name. It is used both by the Project Manager and by exporters. The project name can be translated by translating its value in localization files. The window title will be set to match the project name automatically on startup.
[b]Note:[/b] Changing this value will also change the user data folder's path if [member application/config/use_custom_user_dir] is [code]false[/code]. After renaming the project, you will no longer be able to access existing data in [code]user://[/code] unless you rename the old folder to match the new project name. See [url=https://docs.godotengine.org/en/latest/tutorials/io/data_paths.html]Data paths[/url] in the documentation for more information.
</member>
- <member name="application/config/project_data_dir_name" type="String" setter="" getter="" default="&quot;.godot&quot;">
- The project data directory is used for storing project-specific data (metadata, shader cache, etc.).
- [b]Note:[/b] Restart the application after changing this setting.
- [b]Note:[/b] Changing this value can help on platforms or with third-party tools where specific directory patterns are disallowed. Only modify this setting if you know that your environment requires it, as changing the default can impact compatibility with some external tools or plugins which expect the default [code].godot[/code] folder.
- </member>
<member name="application/config/project_settings_override" type="String" setter="" getter="" default="&quot;&quot;">
Specifies a file to override project settings. For example: [code]user://custom_settings.cfg[/code]. See "Overriding" in the [ProjectSettings] class description at the top for more information.
[b]Note:[/b] Regardless of this setting's value, [code]res://override.cfg[/code] will still be read to override the project settings.
@@ -233,6 +228,12 @@
<member name="application/config/use_custom_user_dir" type="bool" setter="" getter="" default="false">
If [code]true[/code], the project will save user data to its own user directory (see [member application/config/custom_user_dir_name]). This setting is only effective on desktop platforms. A name must be set in the [member application/config/custom_user_dir_name] setting for this to take effect. If [code]false[/code], the project will save user data to [code](OS user data directory)/Godot/app_userdata/(project name)[/code].
</member>
+ <member name="application/config/use_hidden_project_data_directory" type="bool" setter="" getter="" default="true">
+ If [code]true[/code], the project will use a hidden directory ([code].godot[/code]) for storing project-specific data (metadata, shader cache, etc.).
+ If [code]false[/code], a non-hidden directory ([code]godot[/code]) will be used instead.
+ [b]Note:[/b] Restart the application after changing this setting.
+ [b]Note:[/b] Changing this value can help on platforms or with third-party tools where hidden directory patterns are disallowed. Only modify this setting if you know that your environment requires it, as changing the default can impact compatibility with some external tools or plugins which expect the default [code].godot[/code] folder.
+ </member>
<member name="application/config/windows_native_icon" type="String" setter="" getter="" default="&quot;&quot;">
Icon set in [code].ico[/code] format used on Windows to set the game's icon. This is done automatically on start by calling [method DisplayServer.set_native_icon].
</member>
@@ -1698,8 +1699,10 @@
<member name="rendering/shadows/directional_shadow/size.mobile" type="int" setter="" getter="" default="2048">
Lower-end override for [member rendering/shadows/directional_shadow/size] on mobile devices, due to performance concerns or driver support.
</member>
- <member name="rendering/shadows/directional_shadow/soft_shadow_quality" type="int" setter="" getter="" default="2">
+ <member name="rendering/shadows/directional_shadow/soft_shadow_quality" type="int" setter="" getter="" default="3">
Quality setting for shadows cast by [DirectionalLight3D]s. Higher quality settings use more samples when reading from shadow maps and are thus slower. Low quality settings may result in shadows looking grainy.
+ [b]Note:[/b] The Soft Very Low setting will automatically multiply [i]constant[/i] shadow blur by 0.75x to reduce the amount of noise visible. This automatic blur change only affects the constant blur factor defined in [member Light3D.shadow_blur], not the variable blur performed by [DirectionalLight3D]s' [member Light3D.light_angular_distance].
+ [b]Note:[/b] The Soft High and Soft Ultra settings will automatically multiply [i]constant[/i] shadow blur by 1.5× and 2× respectively to make better use of the increased sample count. This increased blur also improves stability of dynamic object shadows.
</member>
<member name="rendering/shadows/directional_shadow/soft_shadow_quality.mobile" type="int" setter="" getter="" default="0">
Lower-end override for [member rendering/shadows/directional_shadow/soft_shadow_quality] on mobile devices, due to performance concerns or driver support.
@@ -1724,8 +1727,10 @@
<member name="rendering/shadows/shadow_atlas/size.mobile" type="int" setter="" getter="" default="2048">
Lower-end override for [member rendering/shadows/shadow_atlas/size] on mobile devices, due to performance concerns or driver support.
</member>
- <member name="rendering/shadows/shadows/soft_shadow_quality" type="int" setter="" getter="" default="2">
+ <member name="rendering/shadows/shadows/soft_shadow_quality" type="int" setter="" getter="" default="3">
Quality setting for shadows cast by [OmniLight3D]s and [SpotLight3D]s. Higher quality settings use more samples when reading from shadow maps and are thus slower. Low quality settings may result in shadows looking grainy.
+ [b]Note:[/b] The Soft Very Low setting will automatically multiply [i]constant[/i] shadow blur by 0.75x to reduce the amount of noise visible. This automatic blur change only affects the constant blur factor defined in [member Light3D.shadow_blur], not the variable blur performed by [DirectionalLight3D]s' [member Light3D.light_angular_distance].
+ [b]Note:[/b] The Soft High and Soft Ultra settings will automatically multiply shadow blur by 1.5× and 2× respectively to make better use of the increased sample count. This increased blur also improves stability of dynamic object shadows.
</member>
<member name="rendering/shadows/shadows/soft_shadow_quality.mobile" type="int" setter="" getter="" default="0">
Lower-end override for [member rendering/shadows/shadows/soft_shadow_quality] on mobile devices, due to performance concerns or driver support.
@@ -1750,23 +1755,23 @@
</member>
<member name="rendering/textures/vram_compression/import_bptc" type="bool" setter="" getter="" default="false">
If [code]true[/code], the texture importer will import VRAM-compressed textures using the BPTC algorithm. This texture compression algorithm is only supported on desktop platforms, and only when using the Vulkan renderer.
- [b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were already imported before. To make this setting apply to textures that were already imported, exit the editor, remove the [code].godot/imported/[/code] folder located inside the project folder then restart the editor (see [member application/config/project_data_dir_name]).
+ [b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were already imported before. To make this setting apply to textures that were already imported, exit the editor, remove the [code].godot/imported/[/code] folder located inside the project folder then restart the editor (see [member application/config/use_hidden_project_data_directory]).
</member>
<member name="rendering/textures/vram_compression/import_etc" type="bool" setter="" getter="" default="false">
If [code]true[/code], the texture importer will import VRAM-compressed textures using the Ericsson Texture Compression algorithm. This algorithm doesn't support alpha channels in textures.
- [b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were already imported before. To make this setting apply to textures that were already imported, exit the editor, remove the [code].godot/imported/[/code] folder located inside the project folder then restart the editor (see [member application/config/project_data_dir_name]).
+ [b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were already imported before. To make this setting apply to textures that were already imported, exit the editor, remove the [code].godot/imported/[/code] folder located inside the project folder then restart the editor (see [member application/config/use_hidden_project_data_directory]).
</member>
<member name="rendering/textures/vram_compression/import_etc2" type="bool" setter="" getter="" default="true">
If [code]true[/code], the texture importer will import VRAM-compressed textures using the Ericsson Texture Compression 2 algorithm. This texture compression algorithm is only supported when using the Vulkan renderer.
- [b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were already imported before. To make this setting apply to textures that were already imported, exit the editor, remove the [code].godot/imported/[/code] folder located inside the project folder then restart the editor (see [member application/config/project_data_dir_name]).
+ [b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were already imported before. To make this setting apply to textures that were already imported, exit the editor, remove the [code].godot/imported/[/code] folder located inside the project folder then restart the editor (see [member application/config/use_hidden_project_data_directory]).
</member>
<member name="rendering/textures/vram_compression/import_pvrtc" type="bool" setter="" getter="" default="false">
If [code]true[/code], the texture importer will import VRAM-compressed textures using the PowerVR Texture Compression algorithm. This texture compression algorithm is only supported on iOS.
- [b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were already imported before. To make this setting apply to textures that were already imported, exit the editor, remove the [code].godot/imported/[/code] folder located inside the project folder then restart the editor (see [member application/config/project_data_dir_name]).
+ [b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were already imported before. To make this setting apply to textures that were already imported, exit the editor, remove the [code].godot/imported/[/code] folder located inside the project folder then restart the editor (see [member application/config/use_hidden_project_data_directory]).
</member>
<member name="rendering/textures/vram_compression/import_s3tc" type="bool" setter="" getter="" default="true">
If [code]true[/code], the texture importer will import VRAM-compressed textures using the S3 Texture Compression algorithm. This algorithm is only supported on desktop platforms and consoles.
- [b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were already imported before. To make this setting apply to textures that were already imported, exit the editor, remove the [code].godot/imported/[/code] folder located inside the project folder then restart the editor (see [member application/config/project_data_dir_name]).
+ [b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were already imported before. To make this setting apply to textures that were already imported, exit the editor, remove the [code].godot/imported/[/code] folder located inside the project folder then restart the editor (see [member application/config/use_hidden_project_data_directory]).
</member>
<member name="rendering/vulkan/descriptor_pools/max_descriptors_per_pool" type="int" setter="" getter="" default="64">
</member>
diff --git a/doc/classes/RenderingServer.xml b/doc/classes/RenderingServer.xml
index 6f19114c16..973f8cdb1e 100644
--- a/doc/classes/RenderingServer.xml
+++ b/doc/classes/RenderingServer.xml
@@ -3663,16 +3663,25 @@
Use 4 splits for shadow projection when using directional light.
</constant>
<constant name="SHADOW_QUALITY_HARD" value="0" enum="ShadowQuality">
+ Lowest shadow filtering quality (fastest). Soft shadows are not available with this quality setting, which means the [member Light3D.shadow_blur] property is ignored if [member Light3D.light_size] and [member Light3D.light_angular_distance] is [code]0.0[/code].
+ [b]Note:[/b] The variable shadow blur performed by [member Light3D.light_size] and [member Light3D.light_angular_distance] is still effective when using hard shadow filtering. In this case, [member Light3D.shadow_blur] [i]is[/i] taken into account. However, the results will not be blurred, instead the blur amount is treated as a maximum radius for the penumbra.
</constant>
- <constant name="SHADOW_QUALITY_SOFT_LOW" value="1" enum="ShadowQuality">
+ <constant name="SHADOW_QUALITY_SOFT_VERY_LOW" value="1" enum="ShadowQuality">
+ Very low shadow filtering quality (faster). When using this quality setting, [member Light3D.shadow_blur] is automatically multiplied by 0.75× to avoid introducing too much noise. This division only applies to lights whose [member Light3D.light_size] or [member Light3D.light_angular_distance] is [code]0.0[/code]).
</constant>
- <constant name="SHADOW_QUALITY_SOFT_MEDIUM" value="2" enum="ShadowQuality">
+ <constant name="SHADOW_QUALITY_SOFT_LOW" value="2" enum="ShadowQuality">
+ Low shadow filtering quality (fast).
</constant>
- <constant name="SHADOW_QUALITY_SOFT_HIGH" value="3" enum="ShadowQuality">
+ <constant name="SHADOW_QUALITY_SOFT_MEDIUM" value="3" enum="ShadowQuality">
+ Medium low shadow filtering quality (average).
</constant>
- <constant name="SHADOW_QUALITY_SOFT_ULTRA" value="4" enum="ShadowQuality">
+ <constant name="SHADOW_QUALITY_SOFT_HIGH" value="4" enum="ShadowQuality">
+ High low shadow filtering quality (slow). When using this quality setting, [member Light3D.shadow_blur] is automatically multiplied by 1.5× to better make use of the high sample count. This increased blur also improves the stability of dynamic object shadows. This multiplier only applies to lights whose [member Light3D.light_size] or [member Light3D.light_angular_distance] is [code]0.0[/code]).
</constant>
- <constant name="SHADOW_QUALITY_MAX" value="5" enum="ShadowQuality">
+ <constant name="SHADOW_QUALITY_SOFT_ULTRA" value="5" enum="ShadowQuality">
+ Highest low shadow filtering quality (slowest). When using this quality setting, [member Light3D.shadow_blur] is automatically multiplied by 2× to better make use of the high sample count. This increased blur also improves the stability of dynamic object shadows. This multiplier only applies to lights whose [member Light3D.light_size] or [member Light3D.light_angular_distance] is [code]0.0[/code]).
+ </constant>
+ <constant name="SHADOW_QUALITY_MAX" value="6" enum="ShadowQuality">
</constant>
<constant name="REFLECTION_PROBE_UPDATE_ONCE" value="0" enum="ReflectionProbeUpdateMode">
Reflection probe will update reflections once and then stop.
diff --git a/doc/classes/RichTextLabel.xml b/doc/classes/RichTextLabel.xml
index 668f9af4a2..9337339f73 100644
--- a/doc/classes/RichTextLabel.xml
+++ b/doc/classes/RichTextLabel.xml
@@ -36,10 +36,10 @@
</description>
</method>
<method name="append_text">
- <return type="int" enum="Error" />
+ <return type="void" />
<argument index="0" name="bbcode" type="String" />
<description>
- Parses [code]bbcode[/code] and adds tags to the tag stack as needed. Returns the result of the parsing, [constant OK] if successful.
+ Parses [code]bbcode[/code] and adds tags to the tag stack as needed.
[b]Note:[/b] Using this method, you can't close a tag that was opened in a previous [method append_text] call. This is done to improve performance, especially when updating large RichTextLabels since rebuilding the whole BBCode every time would be slower. If you absolutely need to close a tag in a future method call, append the [member text] instead of using [method append_text].
</description>
</method>
@@ -130,10 +130,10 @@
</description>
</method>
<method name="parse_bbcode">
- <return type="int" enum="Error" />
+ <return type="void" />
<argument index="0" name="bbcode" type="String" />
<description>
- The assignment version of [method append_text]. Clears the tag stack and inserts the new content. Returns [constant OK] if parses [code]bbcode[/code] successfully.
+ The assignment version of [method append_text]. Clears the tag stack and inserts the new content.
</description>
</method>
<method name="parse_expressions_for_values">
diff --git a/doc/classes/SceneTree.xml b/doc/classes/SceneTree.xml
index ce7fd293d5..6d0ec44b69 100644
--- a/doc/classes/SceneTree.xml
+++ b/doc/classes/SceneTree.xml
@@ -66,7 +66,7 @@
[gdscript]
func some_function():
print("start")
- yield(get_tree().create_timer(1.0), "timeout")
+ await get_tree().create_timer(1.0).timeout
print("end")
[/gdscript]
[csharp]
diff --git a/doc/classes/SceneTreeTimer.xml b/doc/classes/SceneTreeTimer.xml
index f97c5e42b5..b0509a322e 100644
--- a/doc/classes/SceneTreeTimer.xml
+++ b/doc/classes/SceneTreeTimer.xml
@@ -10,7 +10,7 @@
[gdscript]
func some_function():
print("Timer started.")
- yield(get_tree().create_timer(1.0), "timeout")
+ await get_tree().create_timer(1.0).timeout
print("Timer ended.")
[/gdscript]
[csharp]
diff --git a/doc/classes/String.xml b/doc/classes/String.xml
index 10ce03c4b2..abb68e0d05 100644
--- a/doc/classes/String.xml
+++ b/doc/classes/String.xml
@@ -56,11 +56,11 @@
Converts a string containing a binary number into an integer. Binary strings can either be prefixed with [code]0b[/code] or not, and they can also start with a [code]-[/code] before the optional prefix.
[codeblocks]
[gdscript]
- print("0x101".bin_to_int()) # Prints "5".
+ print("0b101".bin_to_int()) # Prints "5".
print("101".bin_to_int()) # Prints "5".
[/gdscript]
[csharp]
- GD.Print("0x101".BinToInt()); // Prints "5".
+ GD.Print("0b101".BinToInt()); // Prints "5".
GD.Print("101".BinToInt()); // Prints "5".
[/csharp]
[/codeblocks]
diff --git a/editor/code_editor.h b/editor/code_editor.h
index 3c52a0c6e8..6e3bd88112 100644
--- a/editor/code_editor.h
+++ b/editor/code_editor.h
@@ -53,7 +53,6 @@ public:
void popup_find_line(CodeEdit *p_edit);
int get_line() const;
- void set_text_editor(CodeEdit *p_text_editor);
GotoLineDialog();
};
@@ -101,7 +100,6 @@ class FindReplaceBar : public HBoxContainer {
void _search_text_changed(const String &p_text);
void _search_text_submitted(const String &p_text);
void _replace_text_submitted(const String &p_text);
- void _update_size();
protected:
void _notification(int p_what);
diff --git a/editor/editor_data.h b/editor/editor_data.h
index 9184ddcf39..976d718b8e 100644
--- a/editor/editor_data.h
+++ b/editor/editor_data.h
@@ -135,8 +135,6 @@ private:
Vector<Callable> undo_redo_callbacks;
Map<StringName, Callable> move_element_functions;
- void _cleanup_history();
-
Vector<EditedScene> edited_scene;
int current_edited_scene;
diff --git a/editor/editor_file_system.cpp b/editor/editor_file_system.cpp
index 767856f939..3d6b523733 100644
--- a/editor/editor_file_system.cpp
+++ b/editor/editor_file_system.cpp
@@ -2163,7 +2163,8 @@ Error EditorFileSystem::_resource_import(const String &p_path) {
}
bool EditorFileSystem::_should_skip_directory(const String &p_path) {
- if (p_path.begins_with(ProjectSettings::get_singleton()->get_project_data_path())) {
+ String project_data_path = ProjectSettings::get_singleton()->get_project_data_path();
+ if (p_path == project_data_path || p_path.begins_with(project_data_path + "/")) {
return true;
}
diff --git a/editor/editor_help.h b/editor/editor_help.h
index 7a45b1abc1..46605b6763 100644
--- a/editor/editor_help.h
+++ b/editor/editor_help.h
@@ -57,7 +57,6 @@ class FindBar : public HBoxContainer {
int results_count;
- void _show_search();
void _hide_bar();
void _search_text_changed(const String &p_text);
@@ -66,8 +65,6 @@ class FindBar : public HBoxContainer {
void _update_results_count();
void _update_matches_label();
- void _update_size();
-
protected:
void _notification(int p_what);
virtual void unhandled_input(const Ref<InputEvent> &p_event) override;
diff --git a/editor/editor_inspector.h b/editor/editor_inspector.h
index 06af8566ff..124ea31302 100644
--- a/editor/editor_inspector.h
+++ b/editor/editor_inspector.h
@@ -96,8 +96,6 @@ private:
bool draw_top_bg;
void _ensure_popup();
- bool _is_property_different(const Variant &p_current, const Variant &p_orig);
- bool _get_instantiated_node_original_property(const StringName &p_prop, Variant &value);
void _focusable_focused(int p_index);
bool selectable;
@@ -281,8 +279,6 @@ public:
void unfold();
void fold();
- Object *get_edited_object();
-
EditorInspectorSection();
~EditorInspectorSection();
};
diff --git a/editor/editor_node.h b/editor/editor_node.h
index 348db1cb7d..c64bcc0460 100644
--- a/editor/editor_node.h
+++ b/editor/editor_node.h
@@ -520,9 +520,6 @@ private:
void _run(bool p_current = false, const String &p_custom = "");
void _run_native(const Ref<EditorExportPreset> &p_preset);
- void _save_optimized();
- void _import_action(const String &p_action);
- void _import(const String &p_file);
void _add_to_recent_scenes(const String &p_scene);
void _update_recent_scenes();
void _open_recent_scene(int p_idx);
@@ -560,7 +557,6 @@ private:
static void _editor_file_dialog_register(EditorFileDialog *p_dialog);
static void _editor_file_dialog_unregister(EditorFileDialog *p_dialog);
- void _cleanup_scene();
void _remove_edited_scene(bool p_change_tab = true);
void _remove_scene(int index, bool p_change_tab = true);
bool _find_and_save_resource(RES p_res, Map<RES, bool> &processed, int32_t flags);
@@ -658,8 +654,6 @@ private:
static int build_callback_count;
static EditorBuildCallback build_callbacks[MAX_BUILD_CALLBACKS];
- void _license_tree_selected();
-
void _update_update_spinner();
Vector<Ref<EditorResourceConversionPlugin>> resource_conversion_plugins;
@@ -778,7 +772,6 @@ public:
SubViewport *get_scene_root() { return scene_root; } // root of the scene being edited
void fix_dependencies(const String &p_for_file);
- void clear_scene() { _cleanup_scene(); }
int new_scene();
Error load_scene(const String &p_scene, bool p_ignore_broken_deps = false, bool p_set_inherited = false, bool p_clear_errors = true, bool p_force_open_imported = false, bool p_silent_change_tab = false);
Error load_resource(const String &p_resource, bool p_ignore_broken_deps = false);
@@ -851,8 +844,6 @@ public:
bool is_scene_in_use(const String &p_path);
- void scan_import_changes();
-
void save_layout();
void open_export_template_manager();
@@ -894,7 +885,6 @@ public:
EditorNode();
~EditorNode();
- void get_singleton(const char *arg1, bool arg2);
void add_resource_conversion_plugin(const Ref<EditorResourceConversionPlugin> &p_plugin);
void remove_resource_conversion_plugin(const Ref<EditorResourceConversionPlugin> &p_plugin);
diff --git a/editor/editor_path.h b/editor/editor_path.h
index cabfa931d6..07f8b7244e 100644
--- a/editor/editor_path.h
+++ b/editor/editor_path.h
@@ -47,7 +47,6 @@ class EditorPath : public Button {
PopupMenu *sub_objects_menu;
Vector<ObjectID> objects;
- EditorPath();
void _show_popup();
void _id_pressed(int p_idx);
diff --git a/editor/filesystem_dock.cpp b/editor/filesystem_dock.cpp
index 1d1976d7e5..cdf0f6e391 100644
--- a/editor/filesystem_dock.cpp
+++ b/editor/filesystem_dock.cpp
@@ -688,9 +688,11 @@ void FileSystemDock::_sort_file_info_list(List<FileSystemDock::FileInfo> &r_file
r_file_list.reverse();
break;
case FILE_SORT_NAME_REVERSE:
+ r_file_list.sort();
r_file_list.reverse();
break;
default: // FILE_SORT_NAME
+ r_file_list.sort();
break;
}
}
diff --git a/editor/filesystem_dock.h b/editor/filesystem_dock.h
index 73bdd685b7..7c3851b94f 100644
--- a/editor/filesystem_dock.h
+++ b/editor/filesystem_dock.h
@@ -205,8 +205,6 @@ private:
void _set_file_display(bool p_active);
void _fs_changed();
- void _tree_toggle_collapsed();
-
void _select_file(const String &p_path, bool p_select_in_favorites = false);
void _tree_activate_file();
void _file_list_activate_file(int p_idx);
@@ -228,8 +226,6 @@ private:
void _file_removed(String p_file);
void _folder_removed(String p_folder);
- void _files_moved(String p_old_file, String p_new_file);
- void _folder_moved(String p_old_folder, String p_new_folder);
void _resource_created();
void _make_dir_confirm();
diff --git a/editor/find_in_files.cpp b/editor/find_in_files.cpp
index b61f6e12eb..283496c0f1 100644
--- a/editor/find_in_files.cpp
+++ b/editor/find_in_files.cpp
@@ -235,7 +235,7 @@ void FindInFiles::_scan_dir(String path, PackedStringArray &out_folders) {
// Ignore special dirs (such as .git and project data directory)
String project_data_dir_name = ProjectSettings::get_singleton()->get_project_data_dir_name();
- if (file.begins_with(".") || file.begins_with(project_data_dir_name)) {
+ if (file.begins_with(".") || file == project_data_dir_name) {
continue;
}
if (dir->current_is_hidden()) {
diff --git a/editor/groups_editor.cpp b/editor/groups_editor.cpp
index 113306fc8a..f01c7f50f7 100644
--- a/editor/groups_editor.cpp
+++ b/editor/groups_editor.cpp
@@ -204,7 +204,8 @@ void GroupDialog::_add_group(String p_name) {
TreeItem *new_group = groups->create_item(groups_root);
new_group->set_text(0, name);
- new_group->add_button(0, groups->get_theme_icon(SNAME("Remove"), SNAME("EditorIcons")), 0);
+ new_group->add_button(0, groups->get_theme_icon(SNAME("Remove"), SNAME("EditorIcons")), DELETE_GROUP);
+ new_group->add_button(0, groups->get_theme_icon(SNAME("ActionCopy"), SNAME("EditorIcons")), COPY_GROUP);
new_group->set_editable(0, true);
new_group->select(0);
groups->ensure_cursor_is_visible();
@@ -297,43 +298,50 @@ void GroupDialog::_load_groups(Node *p_current) {
}
}
-void GroupDialog::_delete_group_pressed(Object *p_item, int p_column, int p_id) {
+void GroupDialog::_modify_group_pressed(Object *p_item, int p_column, int p_id) {
TreeItem *ti = Object::cast_to<TreeItem>(p_item);
if (!ti) {
return;
}
- String name = ti->get_text(0);
+ switch (p_id) {
+ case DELETE_GROUP: {
+ String name = ti->get_text(0);
- undo_redo->create_action(TTR("Delete Group"));
+ undo_redo->create_action(TTR("Delete Group"));
- List<Node *> nodes;
- scene_tree->get_nodes_in_group(name, &nodes);
- bool removed_all = true;
- for (Node *E : nodes) {
- if (_can_edit(E, name)) {
- undo_redo->add_do_method(E, "remove_from_group", name);
- undo_redo->add_undo_method(E, "add_to_group", name, true);
- } else {
- removed_all = false;
- }
- }
+ List<Node *> nodes;
+ scene_tree->get_nodes_in_group(name, &nodes);
+ bool removed_all = true;
+ for (Node *E : nodes) {
+ if (_can_edit(E, name)) {
+ undo_redo->add_do_method(E, "remove_from_group", name);
+ undo_redo->add_undo_method(E, "add_to_group", name, true);
+ } else {
+ removed_all = false;
+ }
+ }
- if (removed_all) {
- undo_redo->add_do_method(this, "_delete_group_item", name);
- undo_redo->add_undo_method(this, "_add_group", name);
- }
+ if (removed_all) {
+ undo_redo->add_do_method(this, "_delete_group_item", name);
+ undo_redo->add_undo_method(this, "_add_group", name);
+ }
- undo_redo->add_do_method(this, "_group_selected");
- undo_redo->add_undo_method(this, "_group_selected");
- undo_redo->add_do_method(this, "emit_signal", "group_edited");
- undo_redo->add_undo_method(this, "emit_signal", "group_edited");
+ undo_redo->add_do_method(this, "_group_selected");
+ undo_redo->add_undo_method(this, "_group_selected");
+ undo_redo->add_do_method(this, "emit_signal", "group_edited");
+ undo_redo->add_undo_method(this, "emit_signal", "group_edited");
- // To force redraw of scene tree.
- undo_redo->add_do_method(EditorNode::get_singleton()->get_scene_tree_dock()->get_tree_editor(), "update_tree");
- undo_redo->add_undo_method(EditorNode::get_singleton()->get_scene_tree_dock()->get_tree_editor(), "update_tree");
+ // To force redraw of scene tree.
+ undo_redo->add_do_method(EditorNode::get_singleton()->get_scene_tree_dock()->get_tree_editor(), "update_tree");
+ undo_redo->add_undo_method(EditorNode::get_singleton()->get_scene_tree_dock()->get_tree_editor(), "update_tree");
- undo_redo->commit_action();
+ undo_redo->commit_action();
+ } break;
+ case COPY_GROUP: {
+ DisplayServer::get_singleton()->clipboard_set(ti->get_text(p_column));
+ } break;
+ }
}
void GroupDialog::_delete_group_item(const String &p_name) {
@@ -437,7 +445,7 @@ GroupDialog::GroupDialog() {
groups->set_v_size_flags(Control::SIZE_EXPAND_FILL);
groups->add_theme_constant_override("draw_guides", 1);
groups->connect("item_selected", callable_mp(this, &GroupDialog::_group_selected));
- groups->connect("button_pressed", callable_mp(this, &GroupDialog::_delete_group_pressed));
+ groups->connect("button_pressed", callable_mp(this, &GroupDialog::_modify_group_pressed));
groups->connect("item_edited", callable_mp(this, &GroupDialog::_group_renamed));
HBoxContainer *chbc = memnew(HBoxContainer);
@@ -582,7 +590,7 @@ void GroupsEditor::_add_group(const String &p_group) {
group_name->clear();
}
-void GroupsEditor::_remove_group(Object *p_item, int p_column, int p_id) {
+void GroupsEditor::_modify_group(Object *p_item, int p_column, int p_id) {
if (!node) {
return;
}
@@ -591,21 +599,26 @@ void GroupsEditor::_remove_group(Object *p_item, int p_column, int p_id) {
if (!ti) {
return;
}
+ switch (p_id) {
+ case DELETE_GROUP: {
+ String name = ti->get_text(0);
+ undo_redo->create_action(TTR("Remove from Group"));
- String name = ti->get_text(0);
-
- undo_redo->create_action(TTR("Remove from Group"));
-
- undo_redo->add_do_method(node, "remove_from_group", name);
- undo_redo->add_undo_method(node, "add_to_group", name, true);
- undo_redo->add_do_method(this, "update_tree");
- undo_redo->add_undo_method(this, "update_tree");
+ undo_redo->add_do_method(node, "remove_from_group", name);
+ undo_redo->add_undo_method(node, "add_to_group", name, true);
+ undo_redo->add_do_method(this, "update_tree");
+ undo_redo->add_undo_method(this, "update_tree");
- // To force redraw of scene tree.
- undo_redo->add_do_method(EditorNode::get_singleton()->get_scene_tree_dock()->get_tree_editor(), "update_tree");
- undo_redo->add_undo_method(EditorNode::get_singleton()->get_scene_tree_dock()->get_tree_editor(), "update_tree");
+ // To force redraw of scene tree.
+ undo_redo->add_do_method(EditorNode::get_singleton()->get_scene_tree_dock()->get_tree_editor(), "update_tree");
+ undo_redo->add_undo_method(EditorNode::get_singleton()->get_scene_tree_dock()->get_tree_editor(), "update_tree");
- undo_redo->commit_action();
+ undo_redo->commit_action();
+ } break;
+ case COPY_GROUP: {
+ DisplayServer::get_singleton()->clipboard_set(ti->get_text(p_column));
+ } break;
+ }
}
struct _GroupInfoComparator {
@@ -653,7 +666,8 @@ void GroupsEditor::update_tree() {
TreeItem *item = tree->create_item(root);
item->set_text(0, gi.name);
if (can_be_deleted) {
- item->add_button(0, get_theme_icon(SNAME("Remove"), SNAME("EditorIcons")), 0);
+ item->add_button(0, get_theme_icon(SNAME("Remove"), SNAME("EditorIcons")), DELETE_GROUP);
+ item->add_button(0, get_theme_icon(SNAME("ActionCopy"), SNAME("EditorIcons")), COPY_GROUP);
} else {
item->set_selectable(0, false);
}
@@ -706,7 +720,7 @@ GroupsEditor::GroupsEditor() {
tree->set_hide_root(true);
tree->set_v_size_flags(Control::SIZE_EXPAND_FILL);
vbc->add_child(tree);
- tree->connect("button_pressed", callable_mp(this, &GroupsEditor::_remove_group));
+ tree->connect("button_pressed", callable_mp(this, &GroupsEditor::_modify_group));
tree->add_theme_constant_override("draw_guides", 1);
add_theme_constant_override("separation", 3 * EDSCALE);
}
diff --git a/editor/groups_editor.h b/editor/groups_editor.h
index 69f746801f..f0a5b4a794 100644
--- a/editor/groups_editor.h
+++ b/editor/groups_editor.h
@@ -82,7 +82,7 @@ class GroupDialog : public AcceptDialog {
void _rename_group_item(const String &p_old_name, const String &p_new_name);
void _add_group(String p_name);
- void _delete_group_pressed(Object *p_item, int p_column, int p_id);
+ void _modify_group_pressed(Object *p_item, int p_column, int p_id);
void _delete_group_item(const String &p_name);
bool _can_edit(Node *p_node, String p_group);
@@ -95,6 +95,11 @@ protected:
static void _bind_methods();
public:
+ enum ModifyButton {
+ DELETE_GROUP,
+ COPY_GROUP,
+ };
+
void edit();
void set_undo_redo(UndoRedo *p_undoredo) { undo_redo = p_undoredo; }
@@ -116,8 +121,7 @@ class GroupsEditor : public VBoxContainer {
void update_tree();
void _add_group(const String &p_group = "");
- void _remove_group(Object *p_item, int p_column, int p_id);
- void _close();
+ void _modify_group(Object *p_item, int p_column, int p_id);
void _show_group_dialog();
@@ -125,6 +129,11 @@ protected:
static void _bind_methods();
public:
+ enum ModifyButton {
+ DELETE_GROUP,
+ COPY_GROUP,
+ };
+
void set_undo_redo(UndoRedo *p_undoredo) { undo_redo = p_undoredo; }
void set_current(Node *p_node);
diff --git a/editor/import/resource_importer_layered_texture.h b/editor/import/resource_importer_layered_texture.h
index 86e9c5bde8..7d8fb3cac5 100644
--- a/editor/import/resource_importer_layered_texture.h
+++ b/editor/import/resource_importer_layered_texture.h
@@ -91,8 +91,6 @@ public:
virtual Error import(const String &p_source_file, const String &p_save_path, const Map<StringName, Variant> &p_options, List<String> *r_platform_variants, List<String> *r_gen_files = nullptr, Variant *r_metadata = nullptr) override;
- void update_imports();
-
virtual bool are_import_settings_valid(const String &p_path) const override;
virtual String get_import_settings_string() const override;
diff --git a/editor/plugins/abstract_polygon_2d_editor.h b/editor/plugins/abstract_polygon_2d_editor.h
index 4f9adfff25..5fea8b75d6 100644
--- a/editor/plugins/abstract_polygon_2d_editor.h
+++ b/editor/plugins/abstract_polygon_2d_editor.h
@@ -106,7 +106,6 @@ protected:
void _wip_changed();
void _wip_close();
void _wip_cancel();
- bool _delete_point(const Vector2 &p_gpoint);
void _notification(int p_what);
void _node_removed(Node *p_node);
diff --git a/editor/plugins/animation_blend_space_1d_editor.h b/editor/plugins/animation_blend_space_1d_editor.h
index fe98a91ab3..503e066894 100644
--- a/editor/plugins/animation_blend_space_1d_editor.h
+++ b/editor/plugins/animation_blend_space_1d_editor.h
@@ -109,8 +109,6 @@ class AnimationNodeBlendSpace1DEditor : public AnimationTreeNodeEditorPlugin {
void _edit_point_pos(double);
void _open_editor();
- void _goto_parent();
-
EditorFileDialog *open_file;
Ref<AnimationNode> file_loaded;
void _file_opened(const String &p_file);
diff --git a/editor/plugins/animation_player_editor_plugin.h b/editor/plugins/animation_player_editor_plugin.h
index eb8db2eaba..26bcff891d 100644
--- a/editor/plugins/animation_player_editor_plugin.h
+++ b/editor/plugins/animation_player_editor_plugin.h
@@ -187,7 +187,6 @@ class AnimationPlayerEditor : public VBoxContainer {
void _scale_changed(const String &p_scale);
void _save_animation(String p_file);
void _load_animations(Vector<String> p_files);
- void _seek_frame_changed(const String &p_frame);
void _seek_value_changed(float p_value, bool p_set = false, bool p_timeline_only = false);
void _blend_editor_next_changed(const int p_idx);
@@ -217,7 +216,6 @@ class AnimationPlayerEditor : public VBoxContainer {
void _pin_pressed();
- AnimationPlayerEditor();
~AnimationPlayerEditor();
protected:
diff --git a/editor/plugins/asset_library_editor_plugin.h b/editor/plugins/asset_library_editor_plugin.h
index 286546f962..5fbf2833b2 100644
--- a/editor/plugins/asset_library_editor_plugin.h
+++ b/editor/plugins/asset_library_editor_plugin.h
@@ -285,7 +285,6 @@ class EditorAssetLibrary : public PanelContainer {
void _search_text_submitted(const String &p_text = "");
void _api_request(const String &p_request, RequestType p_request_type, const String &p_arguments = "");
void _http_request_completed(int p_status, int p_code, const PackedStringArray &headers, const PackedByteArray &p_data);
- void _http_download_completed(int p_status, int p_code, const PackedStringArray &headers, const PackedByteArray &p_data);
void _filter_debounce_timer_timeout();
void _repository_changed(int p_repository_id);
diff --git a/editor/plugins/canvas_item_editor_plugin.h b/editor/plugins/canvas_item_editor_plugin.h
index 1965efbf30..286771ee08 100644
--- a/editor/plugins/canvas_item_editor_plugin.h
+++ b/editor/plugins/canvas_item_editor_plugin.h
@@ -421,8 +421,6 @@ private:
CanvasItem *ref_item;
- void _add_canvas_item(CanvasItem *p_canvas_item);
-
void _save_canvas_item_state(List<CanvasItem *> p_canvas_items, bool save_bones = false);
void _restore_canvas_item_state(List<CanvasItem *> p_canvas_items, bool restore_bones = false);
void _commit_canvas_item_state(List<CanvasItem *> p_canvas_items, String action_name, bool commit_bones = false);
@@ -434,7 +432,6 @@ private:
bool updating_scroll;
void _update_scroll(real_t);
void _update_scrollbars();
- void _append_canvas_item(CanvasItem *p_item);
void _snap_changed();
void _selection_result_pressed(int);
void _selection_menu_hide();
@@ -519,7 +516,6 @@ private:
const Node *p_current);
void _set_anchors_preset(Control::LayoutPreset p_preset);
- void _set_offsets_preset(Control::LayoutPreset p_preset);
void _set_anchors_and_offsets_preset(Control::LayoutPreset p_preset);
void _set_anchors_and_offsets_to_keep_ratio();
@@ -551,15 +547,9 @@ protected:
void _notification(int p_what);
static void _bind_methods();
- void end_drag();
- void box_selection_start(Point2 &click);
- bool box_selection_end();
HBoxContainer *get_panel_hb() { return hb; }
- template <class P, class C>
- void space_selected_items();
-
static CanvasItemEditor *singleton;
public:
diff --git a/editor/plugins/node_3d_editor_plugin.h b/editor/plugins/node_3d_editor_plugin.h
index 2d5aeaa981..5290a8804b 100644
--- a/editor/plugins/node_3d_editor_plugin.h
+++ b/editor/plugins/node_3d_editor_plugin.h
@@ -677,8 +677,6 @@ private:
void _register_all_gizmos();
- Node3DEditor();
-
void _selection_changed();
void _refresh_menu_icons();
diff --git a/editor/plugins/resource_preloader_editor_plugin.h b/editor/plugins/resource_preloader_editor_plugin.h
index 04ab458eb5..943765d4e0 100644
--- a/editor/plugins/resource_preloader_editor_plugin.h
+++ b/editor/plugins/resource_preloader_editor_plugin.h
@@ -59,7 +59,6 @@ class ResourcePreloaderEditor : public PanelContainer {
ResourcePreloader *preloader;
void _load_pressed();
- void _load_scene_pressed();
void _files_load_request(const Vector<String> &p_paths);
void _paste_pressed();
void _remove_resource(const String &p_to_remove);
diff --git a/editor/plugins/script_editor_plugin.h b/editor/plugins/script_editor_plugin.h
index 8caebc1c8c..2b0bdfd109 100644
--- a/editor/plugins/script_editor_plugin.h
+++ b/editor/plugins/script_editor_plugin.h
@@ -371,14 +371,11 @@ class ScriptEditor : public PanelContainer {
bool use_space_indentation;
bool convert_indent_on_save;
- void _trim_trailing_whitespace(TextEdit *tx);
-
void _goto_script_line2(int p_line);
void _goto_script_line(REF p_script, int p_line);
void _set_execution(REF p_script, int p_line);
void _clear_execution(REF p_script);
void _breaked(bool p_breaked, bool p_can_debug);
- void _update_window_menu();
void _script_created(Ref<Script> p_script);
void _set_breakpoint(REF p_scrpt, int p_line, bool p_enabled);
void _clear_breakpoints();
@@ -430,7 +427,6 @@ class ScriptEditor : public PanelContainer {
void _make_script_list_context_menu();
void _help_search(String p_text);
- void _help_index(String p_text);
void _history_forward();
void _history_back();
diff --git a/editor/plugins/sprite_frames_editor_plugin.h b/editor/plugins/sprite_frames_editor_plugin.h
index 5e3b2fb8c1..9732384000 100644
--- a/editor/plugins/sprite_frames_editor_plugin.h
+++ b/editor/plugins/sprite_frames_editor_plugin.h
@@ -100,7 +100,6 @@ class SpriteFramesEditor : public HSplitContainer {
float min_sheet_zoom;
void _load_pressed();
- void _load_scene_pressed();
void _file_load_request(const Vector<String> &p_path, int p_at_pos = -1);
void _copy_pressed();
void _paste_pressed();
@@ -128,7 +127,6 @@ class SpriteFramesEditor : public HSplitContainer {
UndoRedo *undo_redo;
- bool _is_drop_valid(const Dictionary &p_drag_data, const Dictionary &p_item_data) const;
Variant get_drag_data_fw(const Point2 &p_point, Control *p_from);
bool can_drop_data_fw(const Point2 &p_point, const Variant &p_data, Control *p_from) const;
void drop_data_fw(const Point2 &p_point, const Variant &p_data, Control *p_from);
diff --git a/editor/plugins/theme_editor_plugin.h b/editor/plugins/theme_editor_plugin.h
index 60f9e09536..b6becbb1c7 100644
--- a/editor/plugins/theme_editor_plugin.h
+++ b/editor/plugins/theme_editor_plugin.h
@@ -347,7 +347,6 @@ class ThemeTypeEditor : public MarginContainer {
void _update_type_items();
void _list_type_selected(int p_index);
- void _select_type(String p_type_name);
void _add_type_button_cbk();
void _add_default_type_items();
diff --git a/editor/plugins/visual_shader_editor_plugin.cpp b/editor/plugins/visual_shader_editor_plugin.cpp
index 0a067dfc17..09ca1f7608 100644
--- a/editor/plugins/visual_shader_editor_plugin.cpp
+++ b/editor/plugins/visual_shader_editor_plugin.cpp
@@ -31,6 +31,7 @@
#include "visual_shader_editor_plugin.h"
#include "core/config/project_settings.h"
+#include "core/core_string_names.h"
#include "core/input/input.h"
#include "core/io/resource_loader.h"
#include "core/math/math_defs.h"
@@ -212,19 +213,27 @@ void VisualShaderGraphPlugin::set_uniform_name(VisualShader::Type p_type, int p_
void VisualShaderGraphPlugin::update_curve(int p_node_id) {
if (links.has(p_node_id) && links[p_node_id].curve_editors[0]) {
- if (((VisualShaderNodeCurveTexture *)links[p_node_id].visual_node)->get_texture().is_valid()) {
- links[p_node_id].curve_editors[0]->set_curve(((VisualShaderNodeCurveTexture *)links[p_node_id].visual_node)->get_texture()->get_curve());
+ Ref<VisualShaderNodeCurveTexture> tex = Object::cast_to<VisualShaderNodeCurveTexture>(links[p_node_id].visual_node);
+ ERR_FAIL_COND(!tex.is_valid());
+
+ if (tex->get_texture().is_valid()) {
+ links[p_node_id].curve_editors[0]->set_curve(tex->get_texture()->get_curve());
}
+ tex->emit_signal(CoreStringNames::get_singleton()->changed);
}
}
void VisualShaderGraphPlugin::update_curve_xyz(int p_node_id) {
if (links.has(p_node_id) && links[p_node_id].curve_editors[0] && links[p_node_id].curve_editors[1] && links[p_node_id].curve_editors[2]) {
- if (((VisualShaderNodeCurveXYZTexture *)links[p_node_id].visual_node)->get_texture().is_valid()) {
- links[p_node_id].curve_editors[0]->set_curve(((VisualShaderNodeCurveXYZTexture *)links[p_node_id].visual_node)->get_texture()->get_curve_x());
- links[p_node_id].curve_editors[1]->set_curve(((VisualShaderNodeCurveXYZTexture *)links[p_node_id].visual_node)->get_texture()->get_curve_y());
- links[p_node_id].curve_editors[2]->set_curve(((VisualShaderNodeCurveXYZTexture *)links[p_node_id].visual_node)->get_texture()->get_curve_z());
+ Ref<VisualShaderNodeCurveXYZTexture> tex = Object::cast_to<VisualShaderNodeCurveXYZTexture>(links[p_node_id].visual_node);
+ ERR_FAIL_COND(!tex.is_valid());
+
+ if (tex->get_texture().is_valid()) {
+ links[p_node_id].curve_editors[0]->set_curve(tex->get_texture()->get_curve_x());
+ links[p_node_id].curve_editors[1]->set_curve(tex->get_texture()->get_curve_y());
+ links[p_node_id].curve_editors[2]->set_curve(tex->get_texture()->get_curve_z());
}
+ tex->emit_signal(CoreStringNames::get_singleton()->changed);
}
}
diff --git a/editor/plugins/visual_shader_editor_plugin.h b/editor/plugins/visual_shader_editor_plugin.h
index 9f24c5af72..5788959a77 100644
--- a/editor/plugins/visual_shader_editor_plugin.h
+++ b/editor/plugins/visual_shader_editor_plugin.h
@@ -335,8 +335,6 @@ class VisualShaderEditor : public VBoxContainer {
void _delete_node_request(int p_type, int p_node);
void _delete_nodes_request();
- void _removed_from_graph();
-
void _node_changed(int p_id);
void _edit_port_default_input(Object *p_button, int p_node, int p_port);
diff --git a/editor/project_settings_editor.h b/editor/project_settings_editor.h
index eb6c300d5b..f90db02c46 100644
--- a/editor/project_settings_editor.h
+++ b/editor/project_settings_editor.h
@@ -100,8 +100,6 @@ class ProjectSettingsEditor : public AcceptDialog {
void _action_reordered(const String &p_action_name, const String &p_relative_to, bool p_before);
void _update_action_map_editor();
- ProjectSettingsEditor();
-
protected:
void _notification(int p_what);
static void _bind_methods();
diff --git a/editor/quick_open.cpp b/editor/quick_open.cpp
index fc3abbb87e..f0ec78bde6 100644
--- a/editor/quick_open.cpp
+++ b/editor/quick_open.cpp
@@ -55,16 +55,23 @@ void EditorQuickOpen::_build_search_cache(EditorFileSystemDirectory *p_efsd) {
_build_search_cache(p_efsd->get_subdir(i));
}
+ Vector<String> base_types = String(base_type).split(String(","));
for (int i = 0; i < p_efsd->get_file_count(); i++) {
String file_type = p_efsd->get_file_type(i);
- if (ClassDB::is_parent_class(file_type, base_type)) {
- String file = p_efsd->get_file_path(i);
- files.push_back(file.substr(6, file.length()));
-
- // Store refs to used icons.
- String ext = file.get_extension();
- if (!icons.has(ext)) {
- icons.insert(ext, get_theme_icon((has_theme_icon(file_type, SNAME("EditorIcons")) ? file_type : String("Object")), SNAME("EditorIcons")));
+ // Iterate all possible base types.
+ for (String &parent_type : base_types) {
+ if (ClassDB::is_parent_class(file_type, parent_type)) {
+ String file = p_efsd->get_file_path(i);
+ files.push_back(file.substr(6, file.length()));
+
+ // Store refs to used icons.
+ String ext = file.get_extension();
+ if (!icons.has(ext)) {
+ icons.insert(ext, get_theme_icon((has_theme_icon(file_type, SNAME("EditorIcons")) ? file_type : String("Object")), SNAME("EditorIcons")));
+ }
+
+ // Stop testing base types as soon as we got a match.
+ break;
}
}
}
diff --git a/editor/reparent_dialog.h b/editor/reparent_dialog.h
index 5c3a65a522..3fcdda7bed 100644
--- a/editor/reparent_dialog.h
+++ b/editor/reparent_dialog.h
@@ -46,7 +46,6 @@ class ReparentDialog : public ConfirmationDialog {
SceneTreeEditor *tree;
CheckBox *keep_transform;
- void update_tree();
void _reparent();
void _cancel();
@@ -56,7 +55,6 @@ protected:
public:
void set_current(const Set<Node *> &p_selection);
- String get_selected_type();
ReparentDialog();
~ReparentDialog();
diff --git a/editor/scene_tree_dock.h b/editor/scene_tree_dock.h
index 255e026887..66000602fa 100644
--- a/editor/scene_tree_dock.h
+++ b/editor/scene_tree_dock.h
@@ -246,8 +246,6 @@ class SceneTreeDock : public VBoxContainer {
void _perform_instantiate_scenes(const Vector<String> &p_files, Node *parent, int p_pos);
void _replace_with_branch_scene(const String &p_file, Node *base);
- void _file_selected(String p_file);
-
void _remote_tree_selected();
void _local_tree_selected();
diff --git a/editor/scene_tree_editor.h b/editor/scene_tree_editor.h
index 4acd5d8486..b4c40ab17a 100644
--- a/editor/scene_tree_editor.h
+++ b/editor/scene_tree_editor.h
@@ -114,8 +114,6 @@ class SceneTreeEditor : public Control {
void _node_visibility_changed(Node *p_node);
void _update_visibility_color(Node *p_node, TreeItem *p_item);
- void _node_replace_owner(Node *p_base, Node *p_node, Node *p_root);
-
void _selection_changed();
Node *get_scene_node();
@@ -173,7 +171,6 @@ class SceneTreeDialog : public ConfirmationDialog {
//Button *cancel;
LineEdit *filter;
- void update_tree();
void _select();
void _cancel();
void _filter_changed(const String &p_filter);
diff --git a/editor/translations/ar.po b/editor/translations/ar.po
index 1ba7d4f786..67b76771d2 100644
--- a/editor/translations/ar.po
+++ b/editor/translations/ar.po
@@ -1008,7 +1008,7 @@ msgstr "لا نتائج من أجل \"%s\"."
#: editor/create_dialog.cpp editor/property_selector.cpp
msgid "No description available for %s."
-msgstr "ليس هناك وص٠مناسب لأجل s%."
+msgstr "ليس هناك وص٠مناسب لأجل %s."
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
@@ -4262,15 +4262,15 @@ msgstr "جاري البحث..."
#: editor/find_in_files.cpp
msgid "%d match in %d file."
-msgstr "d% تطابق ÙÙŠ d% الملÙ."
+msgstr "%d تطابق ÙÙŠ %d الملÙ."
#: editor/find_in_files.cpp
msgid "%d matches in %d file."
-msgstr "d% تطابقات ÙÙŠ d% الملÙ."
+msgstr "%d تطابقات ÙÙŠ %d الملÙ."
#: editor/find_in_files.cpp
msgid "%d matches in %d files."
-msgstr "d% تطابقات ÙÙŠ d% الملÙ."
+msgstr "%d تطابقات ÙÙŠ %d الملÙ."
#: editor/groups_editor.cpp
msgid "Add to Group"
diff --git a/editor/translations/ca.po b/editor/translations/ca.po
index e6fd202dde..26f7646086 100644
--- a/editor/translations/ca.po
+++ b/editor/translations/ca.po
@@ -21,7 +21,7 @@ msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2021-10-13 09:34+0000\n"
+"PO-Revision-Date: 2021-10-21 10:31+0000\n"
"Last-Translator: Xavier Gomez <hiulit@gmail.com>\n"
"Language-Team: Catalan <https://hosted.weblate.org/projects/godot-engine/"
"godot/ca/>\n"
@@ -747,7 +747,6 @@ msgid "Whole Words"
msgstr "Paraules senceres"
#: editor/code_editor.cpp
-#, fuzzy
msgid "Replace"
msgstr "Reemplaçar"
@@ -2158,7 +2157,6 @@ msgid "Constants"
msgstr "Constants"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Property Descriptions"
msgstr "Descripcions de la Propietat"
@@ -2662,7 +2660,6 @@ msgid "Reload Saved Scene"
msgstr "Desa Escena"
#: editor/editor_node.cpp
-#, fuzzy
msgid ""
"The current scene has unsaved changes.\n"
"Reload the saved scene anyway? This action cannot be undone."
@@ -3194,9 +3191,8 @@ msgid "Suggest a Feature"
msgstr ""
#: editor/editor_node.cpp
-#, fuzzy
msgid "Send Docs Feedback"
-msgstr "Enviar suggeriments sobre la documentació"
+msgstr "Enviar suggeriments sobre la Documentació"
#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
msgid "Community"
@@ -3220,9 +3216,8 @@ msgid "Play"
msgstr "Reprodueix"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Pause the scene execution for debugging."
-msgstr "Pausa l’execució d’escena per a la depuració."
+msgstr "Posa en pausa l'execució de l'escena per a depurar-la."
#: editor/editor_node.cpp
msgid "Pause Scene"
@@ -3782,12 +3777,11 @@ msgid "Cannot remove temporary file:"
msgstr "No es pot desar el Tema:"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid ""
"Templates installation failed.\n"
"The problematic templates archives can be found at '%s'."
msgstr ""
-"No s'han pogut instal·lar les plantilles. \n"
+"No s'han pogut instal·lar les plantilles.\n"
"Les plantilles problemàtics es troben a '%s'."
#: editor/export_template_manager.cpp
@@ -4906,11 +4900,10 @@ msgstr ""
"els noms de les pistes."
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#, fuzzy
msgid "Player path set is invalid, so unable to retrieve track names."
msgstr ""
-"El camí del reproductor assignat no és vàlid, de manera que no pot recuperar "
-"els noms de les pistes."
+"El camí del reproductor assignat no és vàlid, de manera que no s'ha pogut "
+"recuperar els noms de les pistes."
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
#: editor/plugins/root_motion_editor_plugin.cpp
@@ -5136,7 +5129,6 @@ msgid "Include Gizmos (3D)"
msgstr "Inclou Gizmos (3D)"
#: editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "Pin AnimationPlayer"
msgstr "Fixar AnimationPlayer"
@@ -5468,14 +5460,12 @@ msgid "Redirect loop."
msgstr "Bucle de redirecció."
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Request failed, timeout"
msgstr "La sol·licitud ha fallat, s'ha esgotat el temps d'espera"
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Timeout."
-msgstr "Temps esgotat."
+msgstr "Temps d'espera esgotat."
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Failed:"
@@ -5539,7 +5529,6 @@ msgid "Download for this asset is already in progress!"
msgstr "Ja s'està baixant aquest actiu!"
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Recently Updated"
msgstr "Actualitzat Recentment"
@@ -5548,12 +5537,10 @@ msgid "Least Recently Updated"
msgstr "Actualitzacions menys recents"
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Name (A-Z)"
msgstr "Nom (A-Z)"
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Name (Z-A)"
msgstr "Nom (Z-A)"
@@ -5707,9 +5694,8 @@ msgid "Grid Step:"
msgstr "Pas de la Graella:"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Primary Line Every:"
-msgstr "Línia principal cada:"
+msgstr "Línia Principal Cada:"
#: editor/plugins/canvas_item_editor_plugin.cpp
#, fuzzy
@@ -6100,7 +6086,6 @@ msgid "Snapping Options"
msgstr "Opcions d'Ajustament"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Use Rotation Snap"
msgstr "Utilitzar Ajustament de Rotació"
@@ -6131,7 +6116,6 @@ msgid "Snap to Parent"
msgstr "Ajustar al Pare"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Snap to Node Anchor"
msgstr "Ajustar a l'Àncora del Node"
@@ -6144,9 +6128,8 @@ msgid "Snap to Node Center"
msgstr "Ajustar al centre del node"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Snap to Other Nodes"
-msgstr "Ajustar als altres nodes"
+msgstr "Ajustar a altres Nodes"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Snap to Guides"
@@ -6181,9 +6164,8 @@ msgid "Show Bones"
msgstr "Mostra els Ossos"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Make Custom Bone(s) from Node(s)"
-msgstr "Fer os(sos) personalitzat(s) a partir de Node(s)"
+msgstr "Crear os(sos) personalitzat(s) a partir de Node(s)"
#: editor/plugins/canvas_item_editor_plugin.cpp
#, fuzzy
@@ -6233,9 +6215,8 @@ msgid "Frame Selection"
msgstr "Enquadra la Selecció"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Preview Canvas Scale"
-msgstr "Vista prèvia de l'escala del llenç"
+msgstr "Vista prèvia de l'Escala del Llenç"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
@@ -6578,9 +6559,8 @@ msgid "Mesh is empty!"
msgstr "La malla és buida!"
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#, fuzzy
msgid "Couldn't create a Trimesh collision shape."
-msgstr "Crea una Col·lisió entre malles de triangles germanes."
+msgstr "No s'ha pogut crear una forma de col·lisió Trimesh."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Static Trimesh Body"
@@ -6772,18 +6752,16 @@ msgid "Remove item %d?"
msgstr "Elimina l'element %d?"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#, fuzzy
msgid ""
"Update from existing scene?:\n"
"%s"
msgstr ""
-"Actualitzar des d'una 'Escena existent?:\n"
+"Actualitzar des de l'Escena existent?:\n"
"%s"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#, fuzzy
msgid "Mesh Library"
-msgstr "Biblioteca de Models (MeshLibrary)"
+msgstr "Biblioteca de Malles"
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Add Item"
@@ -6906,7 +6884,6 @@ msgstr "Crea un Polígon de Navegació"
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Convert to CPUParticles"
msgstr "Convertir a ParticulesCPU"
@@ -6942,9 +6919,8 @@ msgid "The geometry doesn't contain any faces."
msgstr "El Node no conté cap geometria (cares)."
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "\"%s\" doesn't inherit from Spatial."
-msgstr "\"% s\" no hereta de Spatial."
+msgstr "\"%s\" no hereta de Spatial."
#: editor/plugins/particles_editor_plugin.cpp
#, fuzzy
@@ -7253,14 +7229,12 @@ msgid "Scale Polygon"
msgstr "Escala el Polígon"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
msgid "Create a custom polygon. Enables custom polygon rendering."
msgstr ""
-"Crear polígon personalitzat. Habilita el renderitzat de polígons "
+"Crear un polígon personalitzat. S'habilita el renderitzat de polígons "
"personalitzats."
#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
msgid ""
"Remove a custom polygon. If none remain, custom polygon rendering is "
"disabled."
@@ -7273,9 +7247,8 @@ msgid "Paint weights with specified intensity."
msgstr "Pinta pesos amb la intensitat especificada."
#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
msgid "Unpaint weights with specified intensity."
-msgstr "Despinta el pes amb la intensitat especificada."
+msgstr "Despinta pesos amb la intensitat especificada."
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Radius:"
@@ -7424,7 +7397,6 @@ msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr "L'AnimationTree no té ruta assignada cap a un AnimationPlayer"
#: editor/plugins/root_motion_editor_plugin.cpp
-#, fuzzy
msgid "Path to AnimationPlayer is invalid"
msgstr "El camí cap a l'AnimationPlayer no és vàlid"
@@ -7751,7 +7723,6 @@ msgstr ""
"No s'hi poden afegir els nodes ja que l'escena no utilitza l'script '%s' ."
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Lookup Symbol"
msgstr "Cercar Símbol"
@@ -7864,7 +7835,6 @@ msgid "Contextual Help"
msgstr "Ajuda Contextual"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Toggle Bookmark"
msgstr "Commutar Marcador"
@@ -7873,9 +7843,8 @@ msgid "Go to Next Bookmark"
msgstr "Anar al marcador següent"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Previous Bookmark"
-msgstr "Anar al marcador anterior"
+msgstr "Anar al Marcador Anterior"
#: editor/plugins/script_text_editor.cpp
msgid "Remove All Bookmarks"
@@ -7919,9 +7888,8 @@ msgid "Shader"
msgstr "Shader"
#: editor/plugins/skeleton_2d_editor_plugin.cpp
-#, fuzzy
msgid "This skeleton has no bones, create some children Bone2D nodes."
-msgstr "Aquest esquelet no té ossos, crea alguns nodes fill Bone2D."
+msgstr "Aquest esquelet no té ossos, crea alguns nodes Bone2D fills."
#: editor/plugins/skeleton_2d_editor_plugin.cpp
#, fuzzy
@@ -7929,9 +7897,8 @@ msgid "Create Rest Pose from Bones"
msgstr "Crea Punts d'Emissió des d'una Malla"
#: editor/plugins/skeleton_2d_editor_plugin.cpp
-#, fuzzy
msgid "Set Rest Pose to Bones"
-msgstr "Estableix la postura de repòs als ossos"
+msgstr "Estableix la Postura de Repòs als Ossos"
#: editor/plugins/skeleton_2d_editor_plugin.cpp
msgid "Skeleton2D"
@@ -7960,7 +7927,6 @@ msgid "Create physical skeleton"
msgstr "Crea esquelet físic"
#: editor/plugins/skeleton_ik_editor_plugin.cpp
-#, fuzzy
msgid "Play IK"
msgstr "Reproduir IK"
@@ -8252,7 +8218,6 @@ msgid "Cinematic Preview"
msgstr "Previsualització Cinemàtica"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Not available when using the GLES2 renderer."
msgstr "No disponible quan s'utilitza el renderitzador GLES2."
@@ -8304,13 +8269,13 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid ""
"Note: The FPS value displayed is the editor's framerate.\n"
"It cannot be used as a reliable indication of in-game performance."
msgstr ""
-"Nota: el valor FPS mostrat és la taxa de fotogrames de l'editor.\n"
-"No es pot utilitzar com una indicació fiable del rendiment en el joc."
+"Nota: El valor FPS que es mostra és el percentatge de fotogrames de "
+"l'editor.\n"
+"No es pot utilitzar com a indicació fiable del rendiment del joc."
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
@@ -8336,9 +8301,8 @@ msgid "Snap Nodes to Floor"
msgstr "Ajustar Nodes al Terra"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Couldn't find a solid floor to snap the selection to."
-msgstr "No ha pogut trobar un terra sòlid per ajustar la selecció."
+msgstr "No s'ha pogut trobar un sòl sòlid on ajustar la selecció."
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
@@ -8487,17 +8451,14 @@ msgid "Snap Settings"
msgstr "Configuració d'Ajustament"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Translate Snap:"
msgstr "Ajustament de Translació:"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Rotate Snap (deg.):"
msgstr "Ajustament de Rotació (graus):"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Scale Snap (%):"
msgstr "Ajustament d'Escala (%):"
@@ -8588,9 +8549,8 @@ msgid "LightOccluder2D Preview"
msgstr "Crea un Polígon Oclusor"
#: editor/plugins/sprite_editor_plugin.cpp
-#, fuzzy
msgid "Sprite is empty!"
-msgstr "El Sprite està buit!"
+msgstr "L'Sprite està buit!"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Can't convert a sprite using animation frames to mesh."
@@ -8623,9 +8583,8 @@ msgid "Create CollisionPolygon2D Sibling"
msgstr "Crea un Polígon de Navegació"
#: editor/plugins/sprite_editor_plugin.cpp
-#, fuzzy
msgid "Invalid geometry, can't create light occluder."
-msgstr "La geometria no és vàlida, no es pot crear oclusor de llum."
+msgstr "La geometria no és vàlida; no es pot crear un oclusor de llum."
#: editor/plugins/sprite_editor_plugin.cpp
#, fuzzy
@@ -8657,12 +8616,10 @@ msgid "Settings:"
msgstr "Configuració:"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-#, fuzzy
msgid "No Frames Selected"
-msgstr "No hi ha Fotogrames Seleccionats"
+msgstr "No s'ha seleccionat cap fotograma"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-#, fuzzy
msgid "Add %d Frame(s)"
msgstr "Afegir %d Fotograma(es)"
@@ -8729,9 +8686,8 @@ msgid "Add a Texture from File"
msgstr "Afegir Textura des de Fitxer"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-#, fuzzy
msgid "Add Frames from a Sprite Sheet"
-msgstr "Afegir fotogrames des d'una fulla de Sprites"
+msgstr "Afegir fotogrames des d'un full d'Sprites"
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Insert Empty (Before)"
@@ -8750,7 +8706,6 @@ msgid "Move (After)"
msgstr "Mou (Després)"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-#, fuzzy
msgid "Select Frames"
msgstr "Seleccionar Fotogrames"
@@ -8789,9 +8744,8 @@ msgid "Snap Mode:"
msgstr "Mode d'ajustament:"
#: editor/plugins/texture_region_editor_plugin.cpp
-#, fuzzy
msgid "Pixel Snap"
-msgstr "Ajustar amb els Píxels"
+msgstr "Ajustament de Píxels"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Grid Snap"
@@ -9310,9 +9264,8 @@ msgid ""
msgstr ""
#: editor/plugins/theme_editor_preview.cpp
-#, fuzzy
msgid "Toggle Button"
-msgstr "Botó de commutació"
+msgstr "Botó de Commutació"
#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Button"
@@ -9391,7 +9344,6 @@ msgid "Editable Item"
msgstr "Element Editable"
#: editor/plugins/theme_editor_preview.cpp
-#, fuzzy
msgid "Subtree"
msgstr "Subarbre"
@@ -9421,9 +9373,8 @@ msgid "Erase Selection"
msgstr "Elimina la Selecció"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Fix Invalid Tiles"
-msgstr "Arreglar Rajoles no Valides"
+msgstr "Arreglar Tiles no vàlides"
#: editor/plugins/tile_map_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
@@ -9468,9 +9419,8 @@ msgid "Enable Priority"
msgstr "Habilitar Prioritat"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Filter tiles"
-msgstr "Filtrat de Fitxers"
+msgstr "Filtrar tiles"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Give a TileSet resource to this TileMap to use its tiles."
@@ -9523,14 +9473,12 @@ msgid "Clear Transform"
msgstr "Restablir Transformació"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Add Texture(s) to TileSet."
-msgstr "Afegeix Nodes des d'Arbre."
+msgstr "Afegir Textura(es) al TileSet"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Remove selected Texture from TileSet."
-msgstr "Elimineu la textura seleccionada de TileSet."
+msgstr "Eliminar la textura seleccionada del TileSet."
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Create from Scene"
@@ -9559,18 +9507,16 @@ msgid "Next Coordinate"
msgstr "Coordenada Següent"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Select the next shape, subtile, or Tile."
-msgstr "Seleccioneu la forma, sub-rajola o rajola següent."
+msgstr "Seleccioneu la següent forma, subtile o Tile."
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Previous Coordinate"
msgstr "Coordenada Anterior"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Select the previous shape, subtile, or Tile."
-msgstr "Seleccioneu la forma, sub-rajola o rajola anterior."
+msgstr "Seleccioneu la forma, el subtile o el Tile anterior."
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
@@ -9648,12 +9594,10 @@ msgid "Copy bitmask."
msgstr "Copiar màscara de bits."
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Paste bitmask."
msgstr "Enganxar màscara de bits."
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Erase bitmask."
msgstr "Esborrar màscara de bits."
@@ -9681,9 +9625,8 @@ msgid "Delete Selected Shape"
msgstr "Elimina Seleccionats"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Keep polygon inside region Rect."
-msgstr "Mantenir polígon dins de la regió Rect."
+msgstr "Mantenir el polígon dins de la regió Rect."
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Enable snap and show grid (configurable via the Inspector)."
@@ -9737,9 +9680,8 @@ msgstr ""
"Clica en una altra Peça per a editar-lo."
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Delete selected Rect."
-msgstr "Suprimir Rectangle seleccionat."
+msgstr "Suprimir el Rect seleccionat."
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
@@ -10385,7 +10327,6 @@ msgid "Returns the arc-sine of the parameter."
msgstr "Retorna l'arc sinus del paràmetre."
#: editor/plugins/visual_shader_editor_plugin.cpp
-#, fuzzy
msgid "Returns the inverse hyperbolic sine of the parameter."
msgstr "Retorna el sinus hiperbòlic invers del paràmetre."
diff --git a/editor/translations/de.po b/editor/translations/de.po
index 572c2afb2f..9f6f7ee0bf 100644
--- a/editor/translations/de.po
+++ b/editor/translations/de.po
@@ -72,13 +72,14 @@
# Philipp Wabnitz <philipp.wabnitz@s2011.tu-chemnitz.de>, 2021.
# jmih03 <joerni@mail.de>, 2021.
# Dominik Moos <dominik.moos@protonmail.com>, 2021.
+# Zae Chao <zaevi@live.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2021-09-22 20:30+0000\n"
-"Last-Translator: So Wieso <sowieso@dukun.de>\n"
+"PO-Revision-Date: 2021-10-23 10:13+0000\n"
+"Last-Translator: Zae Chao <zaevi@live.com>\n"
"Language-Team: German <https://hosted.weblate.org/projects/godot-engine/"
"godot/de/>\n"
"Language: de\n"
@@ -2487,9 +2488,8 @@ msgstr ""
"(Instanzen oder Vererbungen) nicht erfüllt."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Could not save one or more scenes!"
-msgstr "Konvertierte Textur konnte nicht gespeichert werden:"
+msgstr "Eine oder mehrere Szenen konnten nicht gespeichert werden!"
#: editor/editor_node.cpp
msgid "Save All Scenes"
@@ -2632,7 +2632,7 @@ msgstr "Änderungen in ‚%s‘ vor dem Schließen speichern?"
#: editor/editor_node.cpp
msgid "%s no longer exists! Please specify a new save location."
-msgstr ""
+msgstr "%s existiert nicht mehr! Bitte anderen Ort zum Speichern wählen."
#: editor/editor_node.cpp
msgid ""
@@ -4491,6 +4491,12 @@ msgid ""
"Selecting another resource in the FileSystem dock without clicking Reimport "
"first will discard changes made in the Import dock."
msgstr ""
+"Es existieren ausstehende Änderungen die noch nicht angewandt wurden. Um "
+"Änderungen der Importoptionen anzuwenden, bitte den Reimportieren-Knopf "
+"klicken.\n"
+"Eine andere Ressource in der Dateisystemleiste auszuwählen, ohne zuvor den "
+"Reimportieren-Knopf zu betätigen, verwirft sämtliche ausstehende Änderungen "
+"der Importoptionen."
#: editor/import_dock.cpp
msgid "Import As:"
@@ -5775,7 +5781,7 @@ msgstr "%d CanvasItems verschieben"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Move CanvasItem \"%s\" to (%d, %d)"
-msgstr "CanvasItem „%s“ zu (%d, d%) verschieben"
+msgstr "CanvasItem „%s“ zu (%d, %d) verschieben"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7476,12 +7482,10 @@ msgid "Move Down"
msgstr "Schiebe runter"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Next Script"
msgstr "Nächstes Skript"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Previous Script"
msgstr "Vorheriges Skript"
@@ -7901,9 +7905,8 @@ msgid "Left Orthogonal"
msgstr "Links orthogonal"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Left Perspective"
-msgstr "Perspektivisch"
+msgstr "Linke Perspektive"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Right Orthogonal"
@@ -8265,24 +8268,23 @@ msgstr "Sicht von rechts"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orbit View Down"
-msgstr ""
+msgstr "Orbitsicht unten"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orbit View Left"
-msgstr ""
+msgstr "Orbitsicht links"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orbit View Right"
-msgstr ""
+msgstr "Orbitsicht rechts"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Orbit View Up"
-msgstr "Sicht von vorne"
+msgstr "Orbitsicht oben"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orbit View 180"
-msgstr ""
+msgstr "Orbitsicht 180"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Switch Perspective/Orthogonal View"
@@ -14651,6 +14653,10 @@ msgid ""
"Consider using a script's process loop instead of relying on a Timer for "
"very low wait times."
msgstr ""
+"Sehr kurze Schaltzeiten (< 0,05 Sekunden) können instabile Ergebnisse "
+"abhängig von der Bildfrequenz liefern.\n"
+"Für sehr kurze Schaltzeiten wird empfohlen, statt eines Timers, die "
+"›process‹-Schleife eines Skripts zu benutzen."
#: scene/main/viewport.cpp
msgid ""
@@ -14666,12 +14672,12 @@ msgstr ""
"irgendeinem Node zum Anzeigen zugewiesen werden."
#: scene/main/viewport.cpp
-#, fuzzy
msgid ""
"The Viewport size must be greater than or equal to 2 pixels on both "
"dimensions to render anything."
msgstr ""
-"Die Größe des Viewports muss größer als 0 sein um etwas rendern zu können."
+"Die Größe des Viewports muss mindestes 2 Pixel in beiden Dimensionen "
+"betragen um überhaupt irgendetwas rendern zu können."
#: scene/resources/occluder_shape.cpp
msgid "OccluderShapeSphere Set Spheres"
diff --git a/editor/translations/es.po b/editor/translations/es.po
index 522575a8fc..bc314e8294 100644
--- a/editor/translations/es.po
+++ b/editor/translations/es.po
@@ -75,8 +75,8 @@ msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2021-10-02 10:08+0000\n"
-"Last-Translator: Javier Ocampos <xavier.ocampos@gmail.com>\n"
+"PO-Revision-Date: 2021-10-23 10:13+0000\n"
+"Last-Translator: Lisandro Lorea <lisandrolorea@gmail.com>\n"
"Language-Team: Spanish <https://hosted.weblate.org/projects/godot-engine/"
"godot/es/>\n"
"Language: es\n"
@@ -2483,9 +2483,8 @@ msgstr ""
"herencias) no se pudieron resolver."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Could not save one or more scenes!"
-msgstr "No se pudo guardar la textura convertida:"
+msgstr "¡No se ha podido guardar una o varias escenas!"
#: editor/editor_node.cpp
msgid "Save All Scenes"
@@ -2630,6 +2629,7 @@ msgstr "¿Guardar cambios de '%s' antes de cerrar?"
#: editor/editor_node.cpp
msgid "%s no longer exists! Please specify a new save location."
msgstr ""
+"¡%s ya no existe! Por favor, especifica una nueva ubicación de guardado."
#: editor/editor_node.cpp
msgid ""
@@ -4491,6 +4491,11 @@ msgid ""
"Selecting another resource in the FileSystem dock without clicking Reimport "
"first will discard changes made in the Import dock."
msgstr ""
+"Tienes cambios pendientes que aún no se han aplicado. Haz clic en Reimportar "
+"para aplicar los cambios realizados en las opciones de importación.\n"
+"Si seleccionas otro recurso en el dock Sistema de Archivos sin hacer clic en "
+"Reimportar primero, se descartarán los cambios realizados en el dock "
+"Importar."
#: editor/import_dock.cpp
msgid "Import As:"
@@ -7479,14 +7484,12 @@ msgid "Move Down"
msgstr "Bajar"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Next Script"
-msgstr "Script siguiente"
+msgstr "Siguiente Script"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Previous Script"
-msgstr "Script anterior"
+msgstr "Script Anterior"
#: editor/plugins/script_editor_plugin.cpp
msgid "File"
@@ -7902,9 +7905,8 @@ msgid "Left Orthogonal"
msgstr "Ortogonal Izquierda"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Left Perspective"
-msgstr "Perspectiva"
+msgstr "Perspectiva Izquierda"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Right Orthogonal"
@@ -8263,24 +8265,23 @@ msgstr "Vista Derecha"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orbit View Down"
-msgstr ""
+msgstr "Vista de Órbita Inferior"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orbit View Left"
-msgstr ""
+msgstr "Vista de Órbita Izquierda"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orbit View Right"
-msgstr ""
+msgstr "Vista de Órbita Derecha"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Orbit View Up"
-msgstr "Vista Frontal"
+msgstr "Vista de Órbita Superior"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orbit View 180"
-msgstr ""
+msgstr "Vista de Órbita 180"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Switch Perspective/Orthogonal View"
@@ -13528,11 +13529,11 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid "Signing debug %s..."
-msgstr "Firma de depuración %s..."
+msgstr "Firmando %s debug..."
#: platform/android/export/export_plugin.cpp
msgid "Signing release %s..."
-msgstr "Firmando liberación %s..."
+msgstr "Firmando %s release..."
#: platform/android/export/export_plugin.cpp
msgid "Could not find keystore, unable to export."
@@ -14640,6 +14641,11 @@ msgid ""
"Consider using a script's process loop instead of relying on a Timer for "
"very low wait times."
msgstr ""
+"Los tiempos de espera del temporizador muy bajos (< 0,05 segundos) pueden "
+"comportarse de manera significativamente diferente dependiendo de la "
+"velocidad de fotogramas renderizados o de la física.\n"
+"Considera la posibilidad de utilizar un bucle en process dentro del script "
+"en lugar de depender de un Timer para tiempos de espera muy bajos."
#: scene/main/viewport.cpp
msgid ""
@@ -14655,13 +14661,12 @@ msgstr ""
"nodo para que se muestre."
#: scene/main/viewport.cpp
-#, fuzzy
msgid ""
"The Viewport size must be greater than or equal to 2 pixels on both "
"dimensions to render anything."
msgstr ""
-"El tamaño del Viewport debe ser mayor que 0 para poder renderizar cualquier "
-"cosa."
+"El tamaño del Viewport debe ser mayor o igual a 2 píxeles en ambas "
+"dimensiones para renderizar cualquier cosa."
#: scene/resources/occluder_shape.cpp
msgid "OccluderShapeSphere Set Spheres"
diff --git a/editor/translations/es_AR.po b/editor/translations/es_AR.po
index 76afb25668..dbff18af4e 100644
--- a/editor/translations/es_AR.po
+++ b/editor/translations/es_AR.po
@@ -24,7 +24,7 @@ msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2021-10-10 10:18+0000\n"
+"PO-Revision-Date: 2021-10-23 10:13+0000\n"
"Last-Translator: Lisandro Lorea <lisandrolorea@gmail.com>\n"
"Language-Team: Spanish (Argentina) <https://hosted.weblate.org/projects/"
"godot-engine/godot/es_AR/>\n"
@@ -2427,9 +2427,8 @@ msgstr ""
"dependencias (instancias o herencia)."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Could not save one or more scenes!"
-msgstr "No se pudo guardar la textura convertida:"
+msgstr "¡No se ha podido guardar una o varias escenas!"
#: editor/editor_node.cpp
msgid "Save All Scenes"
@@ -2575,6 +2574,7 @@ msgstr "Guardar cambios a '%s' antes de cerrar?"
#: editor/editor_node.cpp
msgid "%s no longer exists! Please specify a new save location."
msgstr ""
+"¡%s ya no existe! Por favor, especificá una nueva ubicación de guardado."
#: editor/editor_node.cpp
msgid ""
@@ -3881,7 +3881,7 @@ msgstr "Abrir Carpeta"
#: editor/export_template_manager.cpp
msgid "Open the folder containing installed templates for the current version."
msgstr ""
-"Abra la carpeta que contiene las plantillas instaladas para la versión "
+"Abrir la carpeta que contiene las plantillas instaladas para la versión "
"actual."
#: editor/export_template_manager.cpp
@@ -4433,6 +4433,11 @@ msgid ""
"Selecting another resource in the FileSystem dock without clicking Reimport "
"first will discard changes made in the Import dock."
msgstr ""
+"Tenés cambios pendientes que aún no se han aplicado. Hacé clic en Reimportar "
+"para aplicar los cambios realizados en las opciones de importación.\n"
+"Si seleccionás otro recurso en el dock Sistema de Archivos sin hacer clic en "
+"Reimportar primero, se descartarán los cambios realizados en el dock "
+"Importar."
#: editor/import_dock.cpp
msgid "Import As:"
@@ -5924,7 +5929,7 @@ msgstr "Arrastrar: Rotar el nodo seleccionado alrededor del pivote."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Alt+Drag: Move selected node."
-msgstr "Alt+Arrastrar: Mover el nodo seleccionado"
+msgstr "Alt+Arrastrar: Mover el nodo seleccionado."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "V: Set selected node's pivot position."
@@ -7268,16 +7273,15 @@ msgstr "Generar Puntos en la Room"
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Generate Points"
-msgstr "Conteo de Puntos Generados:"
+msgstr "Generar puntos"
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portal"
msgstr "Invertir Portal"
#: editor/plugins/room_manager_editor_plugin.cpp
-#, fuzzy
msgid "Occluder Set Transform"
-msgstr "Reestablecer Transform"
+msgstr "Transform de Occluder Set"
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Center Node"
@@ -7417,14 +7421,12 @@ msgid "Move Down"
msgstr "Bajar"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Next Script"
-msgstr "Script siguiente"
+msgstr "Script Siguiente"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Previous Script"
-msgstr "Script anterior"
+msgstr "Script Anterior"
#: editor/plugins/script_editor_plugin.cpp
msgid "File"
@@ -7840,9 +7842,8 @@ msgid "Left Orthogonal"
msgstr "Ortogonal Izquierda"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Left Perspective"
-msgstr "Perspectiva"
+msgstr "Perspectiva Izquierda"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Right Orthogonal"
@@ -8201,24 +8202,23 @@ msgstr "Vista Derecha"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orbit View Down"
-msgstr ""
+msgstr "Orbitar Vista Hacia Abajo"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orbit View Left"
-msgstr ""
+msgstr "Orbitar Vista Hacia La Izquierda"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orbit View Right"
-msgstr ""
+msgstr "Orbitar Vista Hacia La Derecha"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Orbit View Up"
-msgstr "Vista Frontal"
+msgstr "Orbitar Vista Hacia Arriba"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orbit View 180"
-msgstr ""
+msgstr "Orbitar Vista 180"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Switch Perspective/Orthogonal View"
@@ -8716,7 +8716,7 @@ msgstr "Seleccione todos los elementos visibles de color y sus datos."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Deselect all visible color items."
-msgstr "Quitar selección a todos los elementos visibles de color."
+msgstr "Quitar selección a todos los items de color visibles."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Select all visible constant items."
@@ -8724,11 +8724,11 @@ msgstr "Seleccionar todos elementos constant visibles."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Select all visible constant items and their data."
-msgstr "Seleccionar todos los elementos constant visibles y sus datos."
+msgstr "Seleccionar todos los items visibles constantes y sus datos."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Deselect all visible constant items."
-msgstr "Deseleccionar todos los elementos constant visibles."
+msgstr "Quitar selección a todos los items visibles constantes."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Select all visible font items."
@@ -8736,7 +8736,7 @@ msgstr "Seleccionar todos los elementos font visibles."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Select all visible font items and their data."
-msgstr "Seleccionar todos los elementos font visibles y sus datos."
+msgstr "Seleccionar todos los items visibles y sus datos."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Deselect all visible font items."
@@ -11820,6 +11820,11 @@ msgid ""
"FileSystem dock context menu\n"
"or create an inherited scene using Scene > New Inherited Scene... instead."
msgstr ""
+"No se puede guardar la rama del nodo raíz como una escena instanciada.\n"
+"Para crear una copia editable de la escena actual, duplicala usando el menú "
+"contextual del dock Sistema de Archivos\n"
+"o crea una escena heredada usando Escena > Nueva Escena Heredada... en su "
+"lugar."
#: editor/scene_tree_dock.cpp
msgid ""
@@ -11827,6 +11832,10 @@ msgid ""
"To create a variation of a scene, you can make an inherited scene based on "
"the instanced scene using Scene > New Inherited Scene... instead."
msgstr ""
+"No se puede guardar la rama de una escena ya instanciada.\n"
+"Para crear una variación de una escena, puedes hacer una escena heredada "
+"basada en la escena instanciada usando Escena > Nueva Escena Heredada... en "
+"su lugar."
#: editor/scene_tree_dock.cpp
msgid "Save New Scene As..."
@@ -12488,24 +12497,20 @@ msgid "Change Ray Shape Length"
msgstr "Cambiar Largo de Shape Rayo"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Set Room Point Position"
-msgstr "Setear Posición de Punto de Curva"
+msgstr "Establecer Posición del Room Point"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Set Portal Point Position"
-msgstr "Setear Posición de Punto de Curva"
+msgstr "Establecer Posición del Portal Point"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Set Occluder Sphere Radius"
-msgstr "Cambiar Radio de Shape Cilindro"
+msgstr "Establecer Radio de la Esfera de Oclusión"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Set Occluder Sphere Position"
-msgstr "Setear Posición de Entrada de Curva"
+msgstr "Establecer Posición de la Esfera de Oclusión"
#: modules/csg/csg_gizmos.cpp
msgid "Change Cylinder Radius"
@@ -12619,14 +12624,12 @@ msgid "Object can't provide a length."
msgstr "El objeto no puede proveer un largo."
#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
-#, fuzzy
msgid "Export Mesh GLTF2"
-msgstr "Exportar Librería de Meshes"
+msgstr "Exportar Malla GLTF2"
#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
-#, fuzzy
msgid "Export GLTF..."
-msgstr "Exportar..."
+msgstr "Exportar GLTF..."
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
@@ -12669,9 +12672,8 @@ msgid "GridMap Paint"
msgstr "Pintar GridMap"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "GridMap Selection"
-msgstr "Llenar Selección en GridMap"
+msgstr "Selección de GridMap"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
@@ -12794,9 +12796,8 @@ msgid "Class name can't be a reserved keyword"
msgstr "El nombre de la clase no puede ser una palabra reservada"
#: modules/mono/csharp_script.cpp
-#, fuzzy
msgid "Build Solution"
-msgstr "Llenar la Selección"
+msgstr "Construir Solución"
#: modules/mono/mono_gd/gd_mono_utils.cpp
msgid "End of inner exception stack trace"
@@ -12928,14 +12929,12 @@ msgid "Add Output Port"
msgstr "Agregar Puerto de Salida"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Change Port Type"
-msgstr "Cambiar Tipo"
+msgstr "Cambiar Tipo de Puerto"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Change Port Name"
-msgstr "Cambiar nombre del puerto de entrada"
+msgstr "Cambiar Nombre de Puerto"
#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
@@ -13050,9 +13049,8 @@ msgid "Add Preload Node"
msgstr "Agregar Nodo Preload"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Add Node(s)"
-msgstr "Agregar Nodo"
+msgstr "Agregar Nodo(s)"
#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
@@ -13319,37 +13317,31 @@ msgstr "Seleccionar dispositivo de la lista"
#: platform/android/export/export_plugin.cpp
msgid "Running on %s"
-msgstr ""
+msgstr "Ejecutando en %s"
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Exporting APK..."
-msgstr "Exportar Todo"
+msgstr "Exportar APK..."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Uninstalling..."
-msgstr "Desinstalar"
+msgstr "Desinstalando..."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Installing to device, please wait..."
-msgstr "Cargando, esperá, por favor..."
+msgstr "Instalando en el dispositivo, espera por favor..."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Could not install to device: %s"
-msgstr "No se pudo instanciar la escena!"
+msgstr "No se pudo instalar en el dispositivo: %s"
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Running on device..."
-msgstr "Ejecutando Script Personalizado..."
+msgstr "Ejecutando en el dispositivo..."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Could not execute on device."
-msgstr "No se pudo crear la carpeta."
+msgstr "No se ha podido ejecutar en el dispositivo."
#: platform/android/export/export_plugin.cpp
msgid "Unable to find the 'apksigner' tool."
@@ -13460,40 +13452,38 @@ msgid ""
"directory.\n"
"The resulting %s is unsigned."
msgstr ""
+"No se ha encontrado 'apksigner'.\n"
+"Por favor, comprobá que el comando esté disponible en el directorio Android "
+"SDK build-tools.\n"
+"El %s resultante está sin firmar."
#: platform/android/export/export_plugin.cpp
msgid "Signing debug %s..."
-msgstr ""
+msgstr "Firmando %s debug..."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Signing release %s..."
-msgstr ""
-"Examinando Archivos,\n"
-"Aguardá, por favor."
+msgstr "Firmando %s release..."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Could not find keystore, unable to export."
-msgstr "No se pudo abrir la plantilla para exportar:"
+msgstr "No se pudo encontrar la keystore, no se puedo exportar."
#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
-msgstr ""
+msgstr "'apksigner' ha retornado con error #%d"
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Verifying %s..."
-msgstr "Agregando %s..."
+msgstr "Verificando %s..."
#: platform/android/export/export_plugin.cpp
msgid "'apksigner' verification of %s failed."
-msgstr ""
+msgstr "La verificación de 'apksigner' de %s ha fallado."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Exporting for Android"
-msgstr "Exportar Todo"
+msgstr "Exportando para Android"
#: platform/android/export/export_plugin.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
@@ -13510,7 +13500,7 @@ msgstr "¡Nombre de archivo inválido! Android APK requiere la extensión *.apk.
#: platform/android/export/export_plugin.cpp
msgid "Unsupported export format!\n"
-msgstr ""
+msgstr "¡Formato de exportación no soportado!\n"
#: platform/android/export/export_plugin.cpp
msgid ""
@@ -13538,16 +13528,17 @@ msgstr ""
msgid ""
"Unable to overwrite res://android/build/res/*.xml files with project name"
msgstr ""
+"No se pudieron sobrescribir los archivos res://android/build/res/*.xml con "
+"el nombre del proyecto"
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Could not export project files to gradle project\n"
-msgstr "No se pudo obtener project.godot en la ruta de proyecto."
+msgstr ""
+"No se pudieron exportar los archivos del proyecto a un proyecto gradle\n"
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Could not write expansion package file!"
-msgstr "No se pudo escribir el archivo:"
+msgstr "¡No se pudo escribir el archivo del paquete de expansión!"
#: platform/android/export/export_plugin.cpp
msgid "Building Android Project (gradle)"
@@ -13575,21 +13566,20 @@ msgstr ""
"directorio del proyecto de gradle para ver los resultados."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Package not found: %s"
-msgstr "No se encontró la animación: '%s'"
+msgstr "Paquete no encontrado:% s"
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Creating APK..."
-msgstr "Creando contornos..."
+msgstr "Creando APK..."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid ""
"Could not find template APK to export:\n"
"%s"
-msgstr "No se pudo abrir la plantilla para exportar:"
+msgstr ""
+"No se pudo encontrar la plantilla APK para exportar:\n"
+"%s"
#: platform/android/export/export_plugin.cpp
msgid ""
@@ -13598,24 +13588,26 @@ msgid ""
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
+"Bibliotecas faltantes en la plantilla de exportación para las arquitecturas "
+"seleccionadas: %s.\n"
+"Por favor, construya una plantilla con todas las bibliotecas necesarias, o "
+"desmarque las arquitecturas faltantes en el preset de exportación."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Adding files..."
-msgstr "Agregando %s..."
+msgstr "Agregando archivos..."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Could not export project files"
-msgstr "No se pudo escribir el archivo:"
+msgstr "No se pudieron exportar los archivos del proyecto"
#: platform/android/export/export_plugin.cpp
msgid "Aligning APK..."
-msgstr ""
+msgstr "Alineando APK..."
#: platform/android/export/export_plugin.cpp
msgid "Could not unzip temporary unaligned APK."
-msgstr ""
+msgstr "No se pudo descomprimir el APK temporal no alineado."
#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
@@ -13663,45 +13655,40 @@ msgid "Could not write file:"
msgstr "No se pudo escribir el archivo:"
#: platform/javascript/export/export.cpp
-#, fuzzy
msgid "Could not read file:"
-msgstr "No se pudo escribir el archivo:"
+msgstr "No se pudo leer el archivo:"
#: platform/javascript/export/export.cpp
-#, fuzzy
msgid "Could not read HTML shell:"
-msgstr "No se pudo leer el shell HTML personalizado:"
+msgstr "No se pudo leer el shell HTML:"
#: platform/javascript/export/export.cpp
-#, fuzzy
msgid "Could not create HTTP server directory:"
-msgstr "No se pudo crear la carpeta."
+msgstr "No se pudo crear el directorio del servidor HTTP:"
#: platform/javascript/export/export.cpp
-#, fuzzy
msgid "Error starting HTTP server:"
-msgstr "Error al guardar escena."
+msgstr "Error al iniciar el servidor HTTP:"
#: platform/osx/export/export.cpp
-#, fuzzy
msgid "Invalid bundle identifier:"
-msgstr "Identificador inválido:"
+msgstr "Identificador de paquete no válido:"
#: platform/osx/export/export.cpp
msgid "Notarization: code signing required."
-msgstr ""
+msgstr "Notarización: se requiere firma de código."
#: platform/osx/export/export.cpp
msgid "Notarization: hardened runtime required."
-msgstr ""
+msgstr "Notarización: se requiere hardened runtime."
#: platform/osx/export/export.cpp
msgid "Notarization: Apple ID name not specified."
-msgstr ""
+msgstr "Notarización: nombre de ID de Apple no especificado."
#: platform/osx/export/export.cpp
msgid "Notarization: Apple ID password not specified."
-msgstr ""
+msgstr "Notarización: contraseña de ID de Apple no especificada."
#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
@@ -14146,6 +14133,9 @@ msgid ""
"longer has any effect.\n"
"To remove this warning, disable the GIProbe's Compress property."
msgstr ""
+"La propiedad Compress de GIProbe ha quedado obsoleta debido a errores "
+"conocidos y ya no tiene ningún efecto.\n"
+"Para eliminar esta advertencia, desactiva la propiedad Compress de GIProbe."
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
@@ -14168,11 +14158,11 @@ msgstr ""
#: scene/3d/occluder.cpp
msgid "No shape is set."
-msgstr ""
+msgstr "No se ha establecido ninguna forma."
#: scene/3d/occluder.cpp
msgid "Only uniform scales are supported."
-msgstr ""
+msgstr "Sólo se admiten escalas uniformes."
#: scene/3d/particles.cpp
msgid ""
@@ -14243,15 +14233,15 @@ msgstr "El nodo A y el nodo B deben ser diferentes PhysicsBody"
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
-msgstr ""
+msgstr "El RoomManager no debe ser hijo o nieto de un Portal."
#: scene/3d/portal.cpp
msgid "A Room should not be a child or grandchild of a Portal."
-msgstr ""
+msgstr "Una Room no debe ser hijo o nieto de un Portal."
#: scene/3d/portal.cpp
msgid "A RoomGroup should not be a child or grandchild of a Portal."
-msgstr ""
+msgstr "Un RoomGroup no debe ser hijo o nieto de un Portal."
#: scene/3d/remote_transform.cpp
msgid ""
@@ -14263,79 +14253,98 @@ msgstr ""
#: scene/3d/room.cpp
msgid "A Room cannot have another Room as a child or grandchild."
-msgstr ""
+msgstr "Una Room no puede tener otra Room como hija o nieta."
#: scene/3d/room.cpp
msgid "The RoomManager should not be placed inside a Room."
-msgstr ""
+msgstr "El RoomManager no debe ubicarse dentro de una Room."
#: scene/3d/room.cpp
msgid "A RoomGroup should not be placed inside a Room."
-msgstr ""
+msgstr "Un RoomGroup no debe colocarse dentro de una Room."
#: scene/3d/room.cpp
msgid ""
"Room convex hull contains a large number of planes.\n"
"Consider simplifying the room bound in order to increase performance."
msgstr ""
+"El cuerpo convexo de la room contiene un gran número de planos.\n"
+"Considera la posibilidad de simplificar los límites de la room para aumentar "
+"el rendimiento."
#: scene/3d/room_group.cpp
msgid "The RoomManager should not be placed inside a RoomGroup."
-msgstr ""
+msgstr "El RoomManager no debe colocarse dentro de un RoomGroup."
#: scene/3d/room_manager.cpp
msgid "The RoomList has not been assigned."
-msgstr ""
+msgstr "La RoomList no ha sido asignada."
#: scene/3d/room_manager.cpp
msgid "The RoomList node should be a Spatial (or derived from Spatial)."
-msgstr ""
+msgstr "El nodo RoomList debe ser un Spatial (o derivado de Spatial)."
#: scene/3d/room_manager.cpp
msgid ""
"Portal Depth Limit is set to Zero.\n"
"Only the Room that the Camera is in will render."
msgstr ""
+"El Límite de Profundidad del Portal está ajustado a cero.\n"
+"Sólo se renderizará la room en la que se encuentra la cámara."
#: scene/3d/room_manager.cpp
msgid "There should only be one RoomManager in the SceneTree."
-msgstr ""
+msgstr "Sólo debe haber un RoomManager en el SceneTree."
#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
msgstr ""
+"La ruta del RoomList no es válida.\n"
+"Por favor, comprueba que la rama de la RoomList ha sido asignada al "
+"RoomManager."
#: scene/3d/room_manager.cpp
msgid "RoomList contains no Rooms, aborting."
-msgstr ""
+msgstr "La RoomList no contiene Rooms, abortando."
#: scene/3d/room_manager.cpp
msgid "Misnamed nodes detected, check output log for details. Aborting."
msgstr ""
+"Nodos con nombres incorrectos detectados, comprueba la salida del Log para "
+"más detalles. Abortando."
#: scene/3d/room_manager.cpp
msgid "Portal link room not found, check output log for details."
msgstr ""
+"No se encuentra Portal link room, comprueba la salida del Log para más "
+"detalles."
#: scene/3d/room_manager.cpp
msgid ""
"Portal autolink failed, check output log for details.\n"
"Check the portal is facing outwards from the source room."
msgstr ""
+"Fallo en el Portal autolink, comprueba la salida del Log para más detalles.\n"
+"Comprueba si el portal está mirando hacia fuera de la room de origen."
#: scene/3d/room_manager.cpp
msgid ""
"Room overlap detected, cameras may work incorrectly in overlapping area.\n"
"Check output log for details."
msgstr ""
+"Detectada superposición de la Room, las cámaras pueden funcionar "
+"incorrectamente en las zonas donde hay superposición.\n"
+"Comrpueba la salida del Log para más detalles."
#: scene/3d/room_manager.cpp
msgid ""
"Error calculating room bounds.\n"
"Ensure all rooms contain geometry or manual bounds."
msgstr ""
+"Error al calcular los límites de la room.\n"
+"Asegurate de que todas las rooms contengan geometría o límites manuales."
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
@@ -14401,7 +14410,7 @@ msgstr "No se encontró la animación: '%s'"
#: scene/animation/animation_player.cpp
msgid "Anim Apply Reset"
-msgstr ""
+msgstr "Aplicar Reset de Animación"
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
@@ -14510,6 +14519,10 @@ msgid ""
"The GLES2 backend is currently in use, so these modes will act like Stretch "
"instead."
msgstr ""
+"Las opciones Tile y Tile Fit para las propiedades Axis Stretch sólo son "
+"efectivas cuando se utiliza el backend de renderizado GLES3.\n"
+"El backend GLES2 está actualmente en uso, por lo que estos modos actuarán "
+"como Stretch en su lugar."
#: scene/gui/popup.cpp
msgid ""
@@ -14554,6 +14567,11 @@ msgid ""
"Consider using a script's process loop instead of relying on a Timer for "
"very low wait times."
msgstr ""
+"Los tiempos de espera del temporizador muy bajos (< 0,05 segundos) pueden "
+"comportarse de manera significativamente diferente dependiendo de la "
+"velocidad de fotogramas renderizados o de la física.\n"
+"Considera la posibilidad de utilizar un bucle en process dentro del script "
+"en lugar de depender de un Timer para tiempos de espera muy bajos."
#: scene/main/viewport.cpp
msgid ""
@@ -14568,15 +14586,16 @@ msgstr ""
"textura interna a algún otro nodo para mostrar."
#: scene/main/viewport.cpp
-#, fuzzy
msgid ""
"The Viewport size must be greater than or equal to 2 pixels on both "
"dimensions to render anything."
-msgstr "El tamaño del viewport debe ser mayor a 0 para poder renderizar."
+msgstr ""
+"El tamaño del Viewport debe ser mayor o igual a 2 píxeles en ambas "
+"dimensiones para renderizar cualquier cosa."
#: scene/resources/occluder_shape.cpp
msgid "OccluderShapeSphere Set Spheres"
-msgstr ""
+msgstr "Establecer Esferas OccluderShapeSphere"
#: scene/resources/visual_shader_nodes.cpp
msgid ""
@@ -14599,25 +14618,29 @@ msgid "Invalid comparison function for that type."
msgstr "Función de comparación inválida para este tipo."
#: servers/visual/shader_language.cpp
-#, fuzzy
msgid "Varying may not be assigned in the '%s' function."
-msgstr "Solo se pueden asignar variaciones en funciones de vértice."
+msgstr "No se pueden asignar varyings a la función '%s'."
#: servers/visual/shader_language.cpp
msgid ""
"Varyings which assigned in 'vertex' function may not be reassigned in "
"'fragment' or 'light'."
msgstr ""
+"Las varyings que fueron asignadas en una función 'vertex' no pueden ser "
+"reasignadas en 'fragment' o 'light'."
#: servers/visual/shader_language.cpp
msgid ""
"Varyings which assigned in 'fragment' function may not be reassigned in "
"'vertex' or 'light'."
msgstr ""
+"Las varyings que fueron asignadas en una función 'fragment' no pueden ser "
+"reasignadas en 'vertex' o 'light'."
#: servers/visual/shader_language.cpp
msgid "Fragment-stage varying could not been accessed in custom function!"
msgstr ""
+"¡No se pudo acceder a la fragment-stage varying en la función personalizada!"
#: servers/visual/shader_language.cpp
msgid "Assignment to function."
diff --git a/editor/translations/fa.po b/editor/translations/fa.po
index c300e21510..e61aa0a6c7 100644
--- a/editor/translations/fa.po
+++ b/editor/translations/fa.po
@@ -363,7 +363,7 @@ msgstr "حذ٠ترک انیمشین"
#. TRANSLATORS: %s will be replaced by a phrase describing the target of track.
#: editor/animation_track_editor.cpp
msgid "Create NEW track for %s and insert key?"
-msgstr "یک ترک جدید برای s% بساز و کلید را درج کن؟"
+msgstr "یک ترک جدید برای %s بساز و کلید را درج کن؟"
#: editor/animation_track_editor.cpp
msgid "Create %d NEW tracks and insert keys?"
@@ -904,11 +904,11 @@ msgstr "سیگنال:"
#: editor/connections_dialog.cpp
msgid "Connect '%s' to '%s'"
-msgstr "'s%' را به 's%' متصل کن"
+msgstr "'%s' را به '%s' متصل کن"
#: editor/connections_dialog.cpp
msgid "Disconnect '%s' from '%s'"
-msgstr "'s%' را از 's%' جدا کن"
+msgstr "'%s' را از '%s' جدا کن"
#: editor/connections_dialog.cpp
msgid "Disconnect all from signal: '%s'"
@@ -1024,7 +1024,7 @@ msgid ""
"Scene '%s' is currently being edited.\n"
"Changes will only take effect when reloaded."
msgstr ""
-"ویرایش صحنه 's%' شروع شده است.\n"
+"ویرایش صحنه '%s' شروع شده است.\n"
"تغییرات تنها وقتی جلوه گرند که از نو بارگیری شوند."
#: editor/dependency_editor.cpp
@@ -1032,7 +1032,7 @@ msgid ""
"Resource '%s' is in use.\n"
"Changes will only take effect when reloaded."
msgstr ""
-"منابع 's%' بکار رÙته‌اند.\n"
+"منابع '%s' بکار رÙته‌اند.\n"
"تغییرات تنها وقتی جلوه گرند که از نو بارگیری شوند."
#: editor/dependency_editor.cpp
@@ -1134,7 +1134,7 @@ msgstr "خطا در بارگذاری!"
#: editor/dependency_editor.cpp
msgid "Permanently delete %d item(s)? (No undo!)"
-msgstr "به طور دائمی تعداد 'd%' آیتم را حذ٠کند؟ (بدون undo !)"
+msgstr "به طور دائمی تعداد '%d' آیتم را حذ٠کند؟ (بدون undo !)"
#: editor/dependency_editor.cpp
msgid "Show Dependencies"
@@ -1519,7 +1519,7 @@ msgstr "کلمه کلیدی نمی تواند به عنوان یک نام خود
#: editor/editor_autoload_settings.cpp
msgid "Autoload '%s' already exists!"
-msgstr "بارگذاری خودکار 's%' هم اکنون موجود است!"
+msgstr "بارگذاری خودکار '%s' هم اکنون موجود است!"
#: editor/editor_autoload_settings.cpp
msgid "Rename Autoload"
@@ -4191,7 +4191,7 @@ msgstr ""
#: editor/groups_editor.cpp
#, fuzzy
msgid "Group name already exists."
-msgstr "بارگذاری خودکار 's%' هم اکنون موجود است!"
+msgstr "بارگذاری خودکار '%s' هم اکنون موجود است!"
#: editor/groups_editor.cpp
#, fuzzy
@@ -4670,7 +4670,7 @@ msgstr "گره انیمیشن"
#: editor/plugins/animation_blend_space_2d_editor.cpp
#, fuzzy
msgid "Triangle already exists."
-msgstr "بارگذاری خودکار 's%' هم اکنون موجود است!"
+msgstr "بارگذاری خودکار '%s' هم اکنون موجود است!"
#: editor/plugins/animation_blend_space_2d_editor.cpp
#, fuzzy
@@ -4875,7 +4875,7 @@ msgstr "نام نامعتبر."
#: editor/plugins/animation_player_editor_plugin.cpp
#, fuzzy
msgid "Animation name already exists!"
-msgstr "بارگذاری خودکار 's%' هم اکنون موجود است!"
+msgstr "بارگذاری خودکار '%s' هم اکنون موجود است!"
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
@@ -7606,7 +7606,7 @@ msgstr ""
#, fuzzy
msgid ""
"Missing connected method '%s' for signal '%s' from node '%s' to node '%s'."
-msgstr "'s%' را از 's%' جدا کن"
+msgstr "'%s' را از '%s' جدا کن"
#: editor/plugins/script_text_editor.cpp
msgid "[Ignore]"
@@ -11277,7 +11277,7 @@ msgstr ""
#: editor/project_settings_editor.cpp
#, fuzzy
msgid "An action with the name '%s' already exists."
-msgstr "بارگذاری خودکار 's%' هم اکنون موجود است!"
+msgstr "بارگذاری خودکار '%s' هم اکنون موجود است!"
#: editor/project_settings_editor.cpp
msgid "Rename Input Action Event"
@@ -13428,7 +13428,7 @@ msgstr "مسیر به یک نود نمیرسد!"
#: modules/visual_script/visual_script_func_nodes.cpp
msgid "Invalid index property name '%s' in node %s."
-msgstr "نام دارایی ایندکس نامعتبر 's%' در نود s%."
+msgstr "نام دارایی ایندکس نامعتبر '%s' در نود %s."
#: modules/visual_script/visual_script_nodes.cpp
msgid ": Invalid argument of type: "
@@ -14497,12 +14497,12 @@ msgstr ""
#: scene/animation/animation_tree.cpp
msgid "Invalid animation: '%s'."
-msgstr "انیمیشن نامعتبر: 's%'."
+msgstr "انیمیشن نامعتبر: '%s'."
#: scene/animation/animation_tree.cpp
#, fuzzy
msgid "Nothing connected to input '%s' of node '%s'."
-msgstr "'s%' را از 's%' جدا کن"
+msgstr "'%s' را از '%s' جدا کن"
#: scene/animation/animation_tree.cpp
msgid "No root AnimationNode for the graph is set."
@@ -14826,7 +14826,7 @@ msgstr "ثوابت قابل تغییر نیستند."
#~ msgstr "صحنه جدید"
#~ msgid "Replaced %d occurrence(s)."
-#~ msgstr "تعداد d% رخداد جایگزین شد."
+#~ msgstr "تعداد %d رخداد جایگزین شد."
#, fuzzy
#~ msgid "Brief Description"
@@ -15232,7 +15232,7 @@ msgstr "ثوابت قابل تغییر نیستند."
#~ "اسپرایت تنظیم شود تا کار کند."
#~ msgid "Method List For '%s':"
-#~ msgstr "لیست متد برای 's%' :"
+#~ msgstr "لیست متد برای '%s' :"
#~ msgid "Return:"
#~ msgstr "بازگشت:"
@@ -15273,7 +15273,7 @@ msgstr "ثوابت قابل تغییر نیستند."
#~ "SpatialSamplePlayer آهنگ را پخش کند."
#~ msgid "Replaced %d Ocurrence(s)."
-#~ msgstr "تعداد d% رخداد جایگزین شد."
+#~ msgstr "تعداد %d رخداد جایگزین شد."
#, fuzzy
#~ msgid "Create Android keystore"
diff --git a/editor/translations/fi.po b/editor/translations/fi.po
index d24317f129..a7dca1dd0d 100644
--- a/editor/translations/fi.po
+++ b/editor/translations/fi.po
@@ -17,7 +17,7 @@ msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2021-09-22 20:30+0000\n"
+"PO-Revision-Date: 2021-10-18 15:35+0000\n"
"Last-Translator: Tapani Niemi <tapani.niemi@kapsi.fi>\n"
"Language-Team: Finnish <https://hosted.weblate.org/projects/godot-engine/"
"godot/fi/>\n"
@@ -2407,9 +2407,8 @@ msgstr ""
"perintää) ei voida toteuttaa."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Could not save one or more scenes!"
-msgstr "Aliprosessia ei voitu käynnistää!"
+msgstr "Yhtä tai useampaa skeneä ei voitu tallentaa!"
#: editor/editor_node.cpp
msgid "Save All Scenes"
@@ -2552,6 +2551,7 @@ msgstr "Tallennetaanko muutokset tiedostoon '%s' ennen sulkemista?"
#: editor/editor_node.cpp
msgid "%s no longer exists! Please specify a new save location."
msgstr ""
+"%s ei ole enää olemassa! Ole hyvä ja määrittele uusi tallennussijainti."
#: editor/editor_node.cpp
msgid ""
@@ -4390,6 +4390,11 @@ msgid ""
"Selecting another resource in the FileSystem dock without clicking Reimport "
"first will discard changes made in the Import dock."
msgstr ""
+"Sinulla on avoinna olevia muutoksia, joita ei ole vielä otettu käyttöön. "
+"Napsauta Tuo uudelleen ottaaksesi tuontivalinnoissa tehdyt muutokset "
+"käyttöön.\n"
+"Toisen resurssin valitseminen Tiedostojärjestelmä-telakassa ilman, että Tuo "
+"uudelleen on tehty hylkää Tuonti-telakassa tehdyt muutokset."
#: editor/import_dock.cpp
msgid "Import As:"
@@ -7366,12 +7371,10 @@ msgid "Move Down"
msgstr "Siirrä alas"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Next Script"
msgstr "Seuraava skripti"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Previous Script"
msgstr "Edellinen skripti"
@@ -7788,9 +7791,8 @@ msgid "Left Orthogonal"
msgstr "Vasen ortogonaalinen"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Left Perspective"
-msgstr "Perspektiivi"
+msgstr "Vasen perspektiivi"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Right Orthogonal"
@@ -8149,24 +8151,23 @@ msgstr "Oikea näkymä"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orbit View Down"
-msgstr ""
+msgstr "Kiertoratanäkymä alas"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orbit View Left"
-msgstr ""
+msgstr "Kiertoratanäkymä vasemmalle"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orbit View Right"
-msgstr ""
+msgstr "Kiertoratanäkymä oikealle"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Orbit View Up"
-msgstr "Etunäkymä"
+msgstr "Kiertoratanäkymä ylös"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orbit View 180"
-msgstr ""
+msgstr "Kiertoratanäkymä 180"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Switch Perspective/Orthogonal View"
@@ -14475,6 +14476,11 @@ msgid ""
"Consider using a script's process loop instead of relying on a Timer for "
"very low wait times."
msgstr ""
+"Hyvin alhaiset ajastimen odotusajat (< 0,05 sekuntia) saattavat käyttäytyä "
+"merkittävästi eri tavoilla riippuen renderöinnin tai fysiikan "
+"päivitystaajuudesta.\n"
+"Harkitse skriptin prosessointisilmukan käyttöä Timer solmun hyvin alhaiseen "
+"odotusaikaan luottamisen sijaan."
#: scene/main/viewport.cpp
msgid ""
@@ -14489,12 +14495,12 @@ msgstr ""
"johonkin solmuun näkyväksi."
#: scene/main/viewport.cpp
-#, fuzzy
msgid ""
"The Viewport size must be greater than or equal to 2 pixels on both "
"dimensions to render anything."
msgstr ""
-"Näyttöruudun koko on oltava suurempi kuin 0, jotta mitään renderöidään."
+"Näyttöruudun koko on oltava suurempi tai yhtä suuri kuin kaksi pikseliä "
+"kummassakin suunnassa, jotta mitään renderöidään."
#: scene/resources/occluder_shape.cpp
msgid "OccluderShapeSphere Set Spheres"
diff --git a/editor/translations/fr.po b/editor/translations/fr.po
index ea1e5dd57e..872b22322e 100644
--- a/editor/translations/fr.po
+++ b/editor/translations/fr.po
@@ -35,7 +35,7 @@
# Rémi Verschelde <rverschelde@gmail.com>, 2016-2017.
# Robin Arys <robinarys@hotmail.com>, 2017.
# Roger BR <drai_kin@hotmail.com>, 2016.
-# salty64 <cedric.arrabie@univ-pau.fr>, 2018, 2020.
+# salty64 <cedric.arrabie@univ-pau.fr>, 2018, 2020, 2021.
# Thomas Baijot <thomasbaijot@gmail.com>, 2016, 2019.
# Tommy Melançon-Roy <tommel1234@hotmail.com>, 2017-2018.
# Willow <theotimefd@aol.com>, 2018.
@@ -49,7 +49,7 @@
# Brice Lobet <tempo.data@gmail.com>, 2018.
# Florent Wijanto <f_wijanto@hotmail.com>, 2018.
# Olivier gareau <olivier.gareau@protonmail.com>, 2018.
-# Rémi Verschelde <akien@godotengine.org>, 2018, 2019, 2020.
+# Rémi Verschelde <akien@godotengine.org>, 2018, 2019, 2020, 2021.
# Rémi Bintein <reminus5@hotmail.fr>, 2018, 2019.
# Sylvain Corsini <sylvain.corsini@gmail.com>, 2018.
# Caye Pierre <pierrecaye@laposte.net>, 2019.
@@ -83,13 +83,14 @@
# Clément Topy <topy72.mine@gmail.com>, 2021.
# Cold <coldragon78@gmail.com>, 2021.
# Blackiris <divjvc@free.fr>, 2021.
+# Olivier Monnom <olivier.monnom@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2021-10-04 13:31+0000\n"
-"Last-Translator: Pierre Caye <pierrecaye@laposte.net>\n"
+"PO-Revision-Date: 2021-10-23 12:20+0200\n"
+"Last-Translator: salty64 <cedric.arrabie@univ-pau.fr>\n"
"Language-Team: French <https://hosted.weblate.org/projects/godot-engine/"
"godot/fr/>\n"
"Language: fr\n"
@@ -2500,9 +2501,8 @@ msgstr ""
"n'ont sans doute pas pu être satisfaites."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Could not save one or more scenes!"
-msgstr "Impossible de démarrer le sous-processus !"
+msgstr "Impossible de sauver la (les) scènes(s) !"
#: editor/editor_node.cpp
msgid "Save All Scenes"
@@ -2651,7 +2651,7 @@ msgstr "Sauvegarder les modifications effectuées à « %s » avant de quitt
#: editor/editor_node.cpp
msgid "%s no longer exists! Please specify a new save location."
-msgstr ""
+msgstr "%s n'existe plus ! Veuillez spécifier un nouvel endroit de sauvegarde."
#: editor/editor_node.cpp
msgid ""
@@ -2699,29 +2699,27 @@ msgstr "La scène actuelle n'est pas enregistrée. Ouvrir quand même ?"
#: editor/editor_node.cpp
msgid "Can't undo while mouse buttons are pressed."
-msgstr ""
+msgstr "Impossible d'annuler quand les boutons de la souris sont activés."
#: editor/editor_node.cpp
msgid "Nothing to undo."
-msgstr ""
+msgstr "Rien à annuler."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Undo: %s"
-msgstr "Annuler"
+msgstr "Annuler %s"
#: editor/editor_node.cpp
msgid "Can't redo while mouse buttons are pressed."
-msgstr ""
+msgstr "Impossible de rétablir quand les boutons de la souris sont activés."
#: editor/editor_node.cpp
msgid "Nothing to redo."
-msgstr ""
+msgstr "Rien à rétablir."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Redo: %s"
-msgstr "Refaire"
+msgstr "Refaire %s"
#: editor/editor_node.cpp
msgid "Can't reload a scene that was never saved."
@@ -2757,7 +2755,7 @@ msgstr "Quitter l'éditeur ?"
#: editor/editor_node.cpp
msgid "Open Project Manager?"
-msgstr "Ouvrir gestionnaire de projets ?"
+msgstr "Ouvrir le gestionnaire de projets ?"
#: editor/editor_node.cpp
msgid "Save & Quit"
@@ -3418,9 +3416,8 @@ msgid "Merge With Existing"
msgstr "Fusionner avec l'existant"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Apply MeshInstance Transforms"
-msgstr "Changer la transformation de l’animation"
+msgstr "Appliquer la transformation du MeshInstance"
#: editor/editor_node.cpp
msgid "Open & Run a Script"
@@ -3683,7 +3680,7 @@ msgstr ""
#: editor/editor_resource_picker.cpp
msgid "Quick Load"
-msgstr ""
+msgstr "Chargement rapide"
#: editor/editor_resource_picker.cpp editor/property_editor.cpp
msgid "Make Unique"
@@ -4519,6 +4516,12 @@ msgid ""
"Selecting another resource in the FileSystem dock without clicking Reimport "
"first will discard changes made in the Import dock."
msgstr ""
+"Vous avez des changements en attente qui n'ont pas encore été appliqués. "
+"Cliquez sur réimporter pour appliquer les changements des options "
+"d'importation\n"
+"Sélectionner une autre ressource dans le \"FileSystem dock\" sans cliquer "
+"sur réimport avant va annuler les changements faits dans le dock "
+"d'importation."
#: editor/import_dock.cpp
msgid "Import As:"
@@ -5599,7 +5602,7 @@ msgstr "Dernier"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "All"
-msgstr "All"
+msgstr "Tous"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Search templates, projects, and demos"
@@ -5812,15 +5815,13 @@ msgstr "Déplacer le CanvasItem « %s » vers (%d, %d)"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Locked"
-msgstr "Verrouillage Sélectionné"
+msgstr "Verrouillé"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Grouped"
-msgstr "Groupes"
+msgstr "Groupé"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
@@ -6773,14 +6774,12 @@ msgid "Remove Selected Item"
msgstr "Supprimer l'élément sélectionné"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#, fuzzy
msgid "Import from Scene (Ignore Transforms)"
-msgstr "Importer depuis la scène"
+msgstr "Importer depuis la scène (Ignore les transformations)"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#, fuzzy
msgid "Import from Scene (Apply Transforms)"
-msgstr "Importer depuis la scène"
+msgstr "Importer depuis la scène (Applique les transformations)"
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Update from Scene"
@@ -7378,14 +7377,12 @@ msgid "Flip Portal"
msgstr "Retourner le Portal"
#: editor/plugins/room_manager_editor_plugin.cpp
-#, fuzzy
msgid "Occluder Set Transform"
-msgstr "Supprimer la transformation"
+msgstr "Définir la transformation pour l'occulteur"
#: editor/plugins/room_manager_editor_plugin.cpp
-#, fuzzy
msgid "Center Node"
-msgstr "Créer un nœud"
+msgstr "Centrer le nœud"
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
@@ -7521,12 +7518,10 @@ msgid "Move Down"
msgstr "Déplacer vers le bas"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Next Script"
msgstr "Script suivant"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Previous Script"
msgstr "Script précédent"
@@ -7893,14 +7888,12 @@ msgid "Skeleton2D"
msgstr "Squelette 2D"
#: editor/plugins/skeleton_2d_editor_plugin.cpp
-#, fuzzy
msgid "Reset to Rest Pose"
-msgstr "Assigner les os à la position de repos"
+msgstr "Remettre à la position de repos"
#: editor/plugins/skeleton_2d_editor_plugin.cpp
-#, fuzzy
msgid "Overwrite Rest Pose"
-msgstr "Écraser"
+msgstr "Écraser la position de repos"
#: editor/plugins/skeleton_editor_plugin.cpp
msgid "Create physical bones"
@@ -7927,74 +7920,62 @@ msgid "Perspective"
msgstr "Perspective"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Top Orthogonal"
-msgstr "Orthogonale"
+msgstr "Haut Orthogonal"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Top Perspective"
-msgstr "Perspective"
+msgstr "Perspective haute"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Bottom Orthogonal"
-msgstr "Orthogonale"
+msgstr "Bas Orthogonal"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Bottom Perspective"
-msgstr "Perspective"
+msgstr "Perspective basse"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Left Orthogonal"
-msgstr "Orthogonale"
+msgstr "Gauche Orthogonal"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Left Perspective"
-msgstr "Perspective"
+msgstr "Perspective Gauche"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Right Orthogonal"
-msgstr "Orthogonale"
+msgstr "Orthogonal Droit"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Right Perspective"
-msgstr "Perspective"
+msgstr "Perspective Droite"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Front Orthogonal"
-msgstr "Orthogonale"
+msgstr "Orthogonal avant"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Front Perspective"
-msgstr "Perspective"
+msgstr "Perspective Avant"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Rear Orthogonal"
-msgstr "Orthogonale"
+msgstr "Orthogonale arrière"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Rear Perspective"
-msgstr "Perspective"
+msgstr "Perspective arrière"
#. TRANSLATORS: This will be appended to the view name when Auto Orthogonal is enabled.
#: editor/plugins/spatial_editor_plugin.cpp
msgid " [auto]"
-msgstr ""
+msgstr " [auto]"
#. TRANSLATORS: This will be appended to the view name when Portal Occulusion is enabled.
#: editor/plugins/spatial_editor_plugin.cpp
msgid " [portals active]"
-msgstr ""
+msgstr " [portails actifs]"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform Aborted."
@@ -8322,24 +8303,23 @@ msgstr "Vue de droite"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orbit View Down"
-msgstr ""
+msgstr "Vue de l'orbite vers le bas"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orbit View Left"
-msgstr ""
+msgstr "Vue de l'orbite vers la gauche"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orbit View Right"
-msgstr ""
+msgstr "Vue de l'orbite vers la droite"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Orbit View Up"
-msgstr "Vue de devant"
+msgstr "Vue de l'orbite vers le devant"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orbit View 180"
-msgstr ""
+msgstr "Vue de l'orbite à 180°"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Switch Perspective/Orthogonal View"
@@ -8415,9 +8395,8 @@ msgid "View Portal Culling"
msgstr "Afficher le Portal culling"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "View Occlusion Culling"
-msgstr "Afficher le Portal culling"
+msgstr "Voir la suppression de l'occlusion"
#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
@@ -8485,9 +8464,8 @@ msgid "Post"
msgstr "Post"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Unnamed Gizmo"
-msgstr "Projet sans titre"
+msgstr "Gizmo sans nom"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Create Mesh2D"
@@ -12648,14 +12626,12 @@ msgid "Set Portal Point Position"
msgstr "Définir la position du point du Portal"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Set Occluder Sphere Radius"
-msgstr "Changer le rayon de la forme du cylindre"
+msgstr "Définir le rayon de la sphère de l'occulteur"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Set Occluder Sphere Position"
-msgstr "Définir position d'entrée de la courbe"
+msgstr "Définir la position de la sphère de l'occulteur"
#: modules/csg/csg_gizmos.cpp
msgid "Change Cylinder Radius"
@@ -12943,9 +12919,8 @@ msgid "Class name can't be a reserved keyword"
msgstr "Le nom de classe ne peut pas être un mot-clé réservé"
#: modules/mono/csharp_script.cpp
-#, fuzzy
msgid "Build Solution"
-msgstr "Remplir la sélection"
+msgstr "Compiler la solution"
#: modules/mono/mono_gd/gd_mono_utils.cpp
msgid "End of inner exception stack trace"
@@ -14325,11 +14300,11 @@ msgstr ""
#: scene/3d/occluder.cpp
msgid "No shape is set."
-msgstr ""
+msgstr "Aucune forme n'est définie."
#: scene/3d/occluder.cpp
msgid "Only uniform scales are supported."
-msgstr ""
+msgstr "Seules les échelles uniformes sont prises en charge."
#: scene/3d/particles.cpp
msgid ""
@@ -14693,6 +14668,10 @@ msgid ""
"The GLES2 backend is currently in use, so these modes will act like Stretch "
"instead."
msgstr ""
+"Les options Tile et Tile Fit pour les propriétés d'extension d'axe ne sont "
+"efficaces que si vous utilisez le rendu GLES3.\n"
+"Le rendu GLES2 étant actuellement utilisé, ces modes se comporteront comme "
+"un étirement."
#: scene/gui/popup.cpp
msgid ""
@@ -14739,6 +14718,10 @@ msgid ""
"Consider using a script's process loop instead of relying on a Timer for "
"very low wait times."
msgstr ""
+"Les temps d'attente très faibles des timers(< 0,05 seconde) peuvent se "
+"comporter de manière très différente selon la vitesse du rendu ou physique.\n"
+"Envisagez d'utiliser la boucle de traitement d'un script au lieu de vous "
+"fier à un timer pour les temps d'attente très faibles."
#: scene/main/viewport.cpp
msgid ""
@@ -14753,17 +14736,16 @@ msgstr ""
"RenderTarget et assignez sa texture à un nœud pouvant l'afficher."
#: scene/main/viewport.cpp
-#, fuzzy
msgid ""
"The Viewport size must be greater than or equal to 2 pixels on both "
"dimensions to render anything."
msgstr ""
-"La taille de la fenêtre d'affichage doit être supérieure à 0 pour pouvoir "
-"afficher quoi que ce soit."
+"La taille de la fenêtre d'affichage doit être supérieure ou égale à 2 pixels "
+"dans les deux sens pour que le rendu soit possible."
#: scene/resources/occluder_shape.cpp
msgid "OccluderShapeSphere Set Spheres"
-msgstr ""
+msgstr "Définir les sphères pour OccluderShapeSphere"
#: scene/resources/visual_shader_nodes.cpp
msgid ""
diff --git a/editor/translations/he.po b/editor/translations/he.po
index 830033a726..9e41b7f9c4 100644
--- a/editor/translations/he.po
+++ b/editor/translations/he.po
@@ -966,7 +966,7 @@ msgstr "מעבר למתודה"
#: editor/create_dialog.cpp
msgid "Change %s Type"
-msgstr "שנה ×ת הסוג של s%"
+msgstr "שנה ×ת הסוג של %s"
#: editor/create_dialog.cpp editor/project_settings_editor.cpp
msgid "Change"
@@ -1026,7 +1026,7 @@ msgid ""
"Scene '%s' is currently being edited.\n"
"Changes will only take effect when reloaded."
msgstr ""
-"סצנה 's%' נמצ×ת כרגע בעריכה.\n"
+"סצנה '%s' נמצ×ת כרגע בעריכה.\n"
"×©×™× ×•×™×™× ×™×›× ×¡×• לתוקף בטעינה מחדש."
#: editor/dependency_editor.cpp
@@ -1034,7 +1034,7 @@ msgid ""
"Resource '%s' is in use.\n"
"Changes will only take effect when reloaded."
msgstr ""
-"מש×ב 's%' × ×ž×¦× ×‘×©×™×ž×•×©.\n"
+"מש×ב '%s' × ×ž×¦× ×‘×©×™×ž×•×©.\n"
"×©×™× ×•×™×™× ×™×›× ×¡×• לתוקף רק בטעינה מחדש."
#: editor/dependency_editor.cpp
diff --git a/editor/translations/ja.po b/editor/translations/ja.po
index 1eb457926d..4a2075e20b 100644
--- a/editor/translations/ja.po
+++ b/editor/translations/ja.po
@@ -40,7 +40,7 @@ msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2021-10-15 04:33+0000\n"
+"PO-Revision-Date: 2021-10-22 06:04+0000\n"
"Last-Translator: nitenook <admin@alterbaum.net>\n"
"Language-Team: Japanese <https://hosted.weblate.org/projects/godot-engine/"
"godot/ja/>\n"
@@ -2431,9 +2431,8 @@ msgstr ""
"満ãŸã›ã¾ã›ã‚“ã§ã—ãŸã€‚"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Could not save one or more scenes!"
-msgstr "変æ›ã—ãŸãƒ†ã‚¯ã‚¹ãƒãƒ£ã‚’ä¿å­˜ã§ãã¾ã›ã‚“ã§ã—ãŸ:"
+msgstr "一ã¤ã¾ãŸã¯è¤‡æ•°ã®ã‚·ãƒ¼ãƒ³ã‚’ä¿å­˜ã§ãã¾ã›ã‚“ã§ã—ãŸï¼"
#: editor/editor_node.cpp
msgid "Save All Scenes"
@@ -2576,7 +2575,7 @@ msgstr "é–‰ã˜ã‚‹å‰ã«ã€'%s' ã¸ã®å¤‰æ›´ã‚’ä¿å­˜ã—ã¾ã™ã‹ï¼Ÿ"
#: editor/editor_node.cpp
msgid "%s no longer exists! Please specify a new save location."
-msgstr ""
+msgstr "%s ã¯å­˜åœ¨ã—ãªããªã‚Šã¾ã—ãŸï¼æ–°ã—ã„ä¿å­˜å…ˆã‚’指定ã—ã¦ãã ã•ã„。"
#: editor/editor_node.cpp
msgid ""
@@ -3324,7 +3323,7 @@ msgstr "ライブラリã®ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ"
#: editor/editor_node.cpp
msgid "Merge With Existing"
-msgstr "既存ã®(ライブラリを)マージ"
+msgstr "既存ã®ã‚‚ã®ã¨ãƒžãƒ¼ã‚¸ã™ã‚‹"
#: editor/editor_node.cpp
msgid "Apply MeshInstance Transforms"
@@ -4416,6 +4415,10 @@ msgid ""
"Selecting another resource in the FileSystem dock without clicking Reimport "
"first will discard changes made in the Import dock."
msgstr ""
+"ã¾ã é©ç”¨ã•ã‚Œã¦ã„ãªã„ä¿ç•™ä¸­ã®å¤‰æ›´ãŒã‚ã‚Šã¾ã™ã€‚å†ã‚¤ãƒ³ãƒãƒ¼ãƒˆã‚’クリックã™ã‚‹ã¨ã€ã‚¤"
+"ンãƒãƒ¼ãƒˆã®ã‚ªãƒ—ションã«åŠ ãˆãŸå¤‰æ›´ã‚’é©ç”¨ã—ã¾ã™ã€‚\n"
+"å†ã‚¤ãƒ³ãƒãƒ¼ãƒˆã‚’クリックã›ãšã«ãƒ•ã‚¡ã‚¤ãƒ«ã‚·ã‚¹ãƒ†ãƒ  ドックã‹ã‚‰ä»–ã®ãƒªã‚½ãƒ¼ã‚¹ã‚’é¸æŠžã™ã‚‹"
+"ã¨ã€ã‚¤ãƒ³ãƒãƒ¼ãƒˆã®ãƒ‰ãƒƒã‚¯ã§åŠ ãˆãŸå¤‰æ›´ã¯ç ´æ£„ã•ã‚Œã¾ã™ã€‚"
#: editor/import_dock.cpp
msgid "Import As:"
@@ -6570,14 +6573,14 @@ msgid "Create Multiple Convex Collision Siblings"
msgstr "複数ã®å‡¸åž‹ã‚³ãƒªã‚¸ãƒ§ãƒ³ã®å…„弟を作æˆ"
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#, fuzzy
msgid ""
"Creates a polygon-based collision shape.\n"
"This is a performance middle-ground between a single convex collision and a "
"polygon-based collision."
msgstr ""
"ãƒãƒªã‚´ãƒ³ãƒ™ãƒ¼ã‚¹ã®ã‚³ãƒªã‚¸ãƒ§ãƒ³ã‚·ã‚§ã‚¤ãƒ—を作æˆã—ã¾ã™ã€‚\n"
-"ã“ã‚Œã¯ã€ä¸Šè¨˜ã®2ã¤ã®ã‚ªãƒ—ションã®ä¸­é–“çš„ãªãƒ‘フォーマンスã§ã™ã€‚"
+"ã“ã‚Œã¯ã€å˜ä¸€ã®å‡¸åž‹ã‚³ãƒªã‚¸ãƒ§ãƒ³ã¨ãƒãƒªã‚´ãƒ³ãƒ™ãƒ¼ã‚¹ã®ã‚³ãƒªã‚¸ãƒ§ãƒ³ã®ä¸­é–“çš„ãªãƒ‘フォーマ"
+"ンスã§ã™ã€‚"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Outline Mesh..."
@@ -6708,7 +6711,7 @@ msgstr "サーフェスを投入ã™ã‚‹"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Populate MultiMesh"
-msgstr "マルãƒãƒ¡ãƒƒã‚·ãƒ¥ã‚’投入ã™ã‚‹"
+msgstr "MultiMeshを投入ã™ã‚‹"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Target Surface:"
@@ -7228,28 +7231,24 @@ msgid "Flip Portals"
msgstr "ãƒãƒ¼ã‚¿ãƒ«ã‚’å転"
#: editor/plugins/room_manager_editor_plugin.cpp
-#, fuzzy
msgid "Room Generate Points"
-msgstr "生æˆã—ãŸãƒã‚¤ãƒ³ãƒˆã®æ•°:"
+msgstr "Roomã®ãƒã‚¤ãƒ³ãƒˆã‚’生æˆ"
#: editor/plugins/room_manager_editor_plugin.cpp
-#, fuzzy
msgid "Generate Points"
-msgstr "生æˆã—ãŸãƒã‚¤ãƒ³ãƒˆã®æ•°:"
+msgstr "ãƒã‚¤ãƒ³ãƒˆã‚’生æˆ"
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portal"
msgstr "ãƒãƒ¼ã‚¿ãƒ«ã‚’å転"
#: editor/plugins/room_manager_editor_plugin.cpp
-#, fuzzy
msgid "Occluder Set Transform"
-msgstr "トランスフォームをクリア"
+msgstr "オクルーダーã®ãƒˆãƒ©ãƒ³ã‚¹ãƒ•ã‚©ãƒ¼ãƒ ã‚’セット"
#: editor/plugins/room_manager_editor_plugin.cpp
-#, fuzzy
msgid "Center Node"
-msgstr "ノードを生æˆ"
+msgstr "中央ノード"
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
@@ -7386,14 +7385,12 @@ msgid "Move Down"
msgstr "下ã«ç§»å‹•"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Next Script"
msgstr "次ã®ã‚¹ã‚¯ãƒªãƒ—ト"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Previous Script"
-msgstr "ç›´å‰ã®ã‚¹ã‚¯ãƒªãƒ—ト"
+msgstr "å‰ã®ã‚¹ã‚¯ãƒªãƒ—ト"
#: editor/plugins/script_editor_plugin.cpp
msgid "File"
@@ -7810,9 +7807,8 @@ msgid "Left Orthogonal"
msgstr "å·¦å´é¢ 平行投影"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Left Perspective"
-msgstr "é€è¦–投影"
+msgstr "å·¦å´é¢ é€è¦–投影"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Right Orthogonal"
@@ -8103,9 +8099,8 @@ msgstr ""
"ゲーム内ã®ãƒ‘フォーマンスを確実ã«ç¤ºã™ã‚‚ã®ã¨ã—ã¦ä½¿ç”¨ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Convert Rooms"
-msgstr "%s ã«å¤‰æ›"
+msgstr "Roomを変æ›"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
@@ -8143,7 +8138,7 @@ msgstr "スナップを使用"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Converts rooms for portal culling."
-msgstr ""
+msgstr "ãƒãƒ¼ã‚¿ãƒ«ã‚«ãƒªãƒ³ã‚°ç”¨ã«Roomを変æ›ã—ã¾ã™ã€‚"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
@@ -8171,24 +8166,23 @@ msgstr "å³å´é¢å›³"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orbit View Down"
-msgstr ""
+msgstr "オービットビュー 下"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orbit View Left"
-msgstr ""
+msgstr "オービットビュー 左"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orbit View Right"
-msgstr ""
+msgstr "オービットビュー å³"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Orbit View Up"
-msgstr "å‰é¢å›³"
+msgstr "オービットビュー 上"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orbit View 180"
-msgstr ""
+msgstr "オービットビュー 180"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Switch Perspective/Orthogonal View"
@@ -8673,9 +8667,8 @@ msgid "With Data"
msgstr "データ付"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Select by data type:"
-msgstr "ノードをé¸æŠž"
+msgstr "データã®ã‚¿ã‚¤ãƒ—ã‹ã‚‰é¸æŠž:"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Select all visible color items."
@@ -8747,11 +8740,11 @@ msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
msgid "Collapse types."
-msgstr "タイプを折りãŸãŸã‚€"
+msgstr "タイプを折りãŸãŸã‚€ã€‚"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Expand types."
-msgstr "タイプを展開"
+msgstr "タイプを展開。"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Select all Theme items."
@@ -8774,9 +8767,8 @@ msgid "Deselect all Theme items."
msgstr "ã™ã¹ã¦ã®ãƒ†ãƒ¼ãƒžã‚¢ã‚¤ãƒ†ãƒ ã®é¸æŠžã‚’解除ã™ã‚‹ã€‚"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Import Selected"
-msgstr "シーンをインãƒãƒ¼ãƒˆ"
+msgstr "é¸æŠžã•ã‚ŒãŸã‚‚ã®ã‚’インãƒãƒ¼ãƒˆ"
#: editor/plugins/theme_editor_plugin.cpp
msgid ""
@@ -8970,19 +8962,16 @@ msgstr ""
"ã¦ã®ã“ã®ã‚¿ã‚¤ãƒ—ã®StyleBoxã§åŒã˜ãƒ—ロパティãŒæ›´æ–°ã•ã‚Œã¾ã™ã€‚"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Add Type"
-msgstr "タイプ(型)"
+msgstr "タイプを追加"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Add Item Type"
-msgstr "アイテムを追加"
+msgstr "アイテムã®ã‚¿ã‚¤ãƒ—を追加"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Node Types:"
-msgstr "ノードタイプ"
+msgstr "ノードã®ã‚¿ã‚¤ãƒ—:"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Show Default"
@@ -9030,6 +9019,8 @@ msgid ""
"Toggle the control picker, allowing to visually select control types for "
"edit."
msgstr ""
+"コントロールピッカーを切り替ãˆã¦ã€ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«ã‚¿ã‚¤ãƒ—を視覚的ã«é¸æŠžã—ã¦ç·¨é›†ã§"
+"ãるよã†ã«ã—ã¾ã™ã€‚"
#: editor/plugins/theme_editor_preview.cpp
msgid "Toggle Button"
@@ -9064,9 +9055,8 @@ msgid "Checked Radio Item"
msgstr "ãƒã‚§ãƒƒã‚¯æ¸ˆã¿ãƒ©ã‚¸ã‚ª アイテム"
#: editor/plugins/theme_editor_preview.cpp
-#, fuzzy
msgid "Named Separator"
-msgstr "åå‰ä»˜ã分類。"
+msgstr "åå‰ä»˜ãセパレーター"
#: editor/plugins/theme_editor_preview.cpp
msgid "Submenu"
@@ -11306,22 +11296,20 @@ msgid "Remove Translation"
msgstr "翻訳を除去"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Translation Resource Remap: Add %d Path(s)"
-msgstr "リソースå†ãƒžãƒƒãƒ—ãŒå†ãƒžãƒƒãƒ—を追加"
+msgstr "翻訳リソースã®å†ãƒžãƒƒãƒ—: %d個ã®ãƒ‘スを追加"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Translation Resource Remap: Add %d Remap(s)"
-msgstr "リソースå†ãƒžãƒƒãƒ—ãŒå†ãƒžãƒƒãƒ—を追加"
+msgstr "翻訳リソースã®å†ãƒžãƒƒãƒ—: %d個ã®å†ãƒžãƒƒãƒ—を追加"
#: editor/project_settings_editor.cpp
msgid "Change Resource Remap Language"
-msgstr "リソースリマップ言語を変更"
+msgstr "リソースã®å†ãƒžãƒƒãƒ—言語を変更"
#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap"
-msgstr "リソースã®ãƒªãƒžãƒƒãƒ—を削除"
+msgstr "リソースã®å†ãƒžãƒƒãƒ—を削除"
#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap Option"
@@ -11389,7 +11377,7 @@ msgstr "翻訳:"
#: editor/project_settings_editor.cpp
msgid "Remaps"
-msgstr "リマップ"
+msgstr "å†ãƒžãƒƒãƒ—"
#: editor/project_settings_editor.cpp
msgid "Resources:"
@@ -11397,7 +11385,7 @@ msgstr "リソース:"
#: editor/project_settings_editor.cpp
msgid "Remaps by Locale:"
-msgstr "ロケールã«å¾“ã„リマップ:"
+msgstr "ロケールã«å¾“ã„å†ãƒžãƒƒãƒ—:"
#: editor/project_settings_editor.cpp
msgid "Locale"
@@ -12456,14 +12444,12 @@ msgid "Set Portal Point Position"
msgstr "Portal ãƒã‚¤ãƒ³ãƒˆã®ä½ç½®ã‚’設定"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Set Occluder Sphere Radius"
-msgstr "円柱シェイプã®åŠå¾„を変更"
+msgstr "オクルーダーã®çƒå½¢ã®åŠå¾„をセット"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Set Occluder Sphere Position"
-msgstr "曲線ã®In-Controlã®ä½ç½®ã‚’指定"
+msgstr "オクルーダーã®çƒå½¢ã®ä½ç½®ã‚’セット"
#: modules/csg/csg_gizmos.cpp
msgid "Change Cylinder Radius"
@@ -12850,7 +12836,7 @@ msgstr ""
#: modules/visual_script/visual_script.cpp
msgid "Stack overflow with stack depth: "
-msgstr "スタックオーãƒãƒ¼ãƒ•ãƒ­ãƒ¼ スタックã®æ·±ã•: "
+msgstr "スタックオーãƒãƒ¼ãƒ•ãƒ­ãƒ¼ç™ºç”Ÿ スタックã®æ·±ã•: "
#: modules/visual_script/visual_script_editor.cpp
msgid "Change Signal Arguments"
@@ -13089,9 +13075,8 @@ msgid "Select at least one node with sequence port."
msgstr "シーケンス ãƒãƒ¼ãƒˆã‚’æŒã¤ãƒŽãƒ¼ãƒ‰ã‚’å°‘ãªãã¨ã‚‚ 1 ã¤é¸æŠžã—ã¾ã™ã€‚"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Try to only have one sequence input in selection."
-msgstr "セクションã§ã¯å”¯ä¸€ã¤ã®ã‚·ãƒ¼ã‚±ãƒ³ã‚¹å…¥åŠ›ã‚’æŒã¤ã‚ˆã†ã«ã—ã¦ãã ã•ã„。"
+msgstr "é¸æŠžã™ã‚‹ã‚·ãƒ¼ã‚±ãƒ³ã‚¹å…¥åŠ›ã¯1ã¤ã ã‘ã«ã—ã¦ãã ã•ã„。"
#: modules/visual_script/visual_script_editor.cpp
msgid "Create Function"
@@ -13187,7 +13172,7 @@ msgstr "イテレーターãŒç„¡åŠ¹ã«ãªã‚Šã¾ã—ãŸ: "
#: modules/visual_script/visual_script_func_nodes.cpp
msgid "Invalid index property name."
-msgstr "インデックスプロパティåãŒç„¡åŠ¹ã§ã™ã€‚"
+msgstr "インデックスã®ãƒ—ロパティåãŒç„¡åŠ¹ã§ã™ã€‚"
#: modules/visual_script/visual_script_func_nodes.cpp
msgid "Base object is not a Node!"
@@ -13473,7 +13458,7 @@ msgstr ""
msgid ""
"Unable to overwrite res://android/build/res/*.xml files with project name"
msgstr ""
-"res://android/build/res/*.xml ファイルをプロジェクトåã§ä¸Šæ›¸ãã§ãã¾ã›ã‚“。"
+"res://android/build/res/*.xml ファイルをプロジェクトåã§ä¸Šæ›¸ãã§ãã¾ã›ã‚“"
#: platform/android/export/export_plugin.cpp
msgid "Could not export project files to gradle project\n"
@@ -13855,8 +13840,8 @@ msgid ""
"A material to process the particles is not assigned, so no behavior is "
"imprinted."
msgstr ""
-"パーティクルを処ç†ã™ã‚‹ãƒžãƒ†ãƒªã‚¢ãƒ«ã¯å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¦ã„ãªã„ãŸã‚ã€å‹•ä½œã¯ã‚¤ãƒ³ãƒ—リン"
-"トã•ã‚Œã¾ã›ã‚“。"
+"パーティクルを処ç†ã™ã‚‹ãƒžãƒ†ãƒªã‚¢ãƒ«ãŒå‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¦ã„ãªã„ãŸã‚ã€å‹•ä½œã‚’å映ã§ãã¾"
+"ã›ã‚“ã§ã—ãŸã€‚"
#: scene/2d/particles_2d.cpp
msgid ""
@@ -13966,9 +13951,8 @@ msgid "Preparing environment"
msgstr "環境を準備中"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Generating capture"
-msgstr "ライトマップã®ç”Ÿæˆ"
+msgstr "キャプãƒãƒ£ãƒ¼ã‚’生æˆä¸­"
#: scene/3d/baked_lightmap.cpp
msgid "Saving lightmaps"
@@ -14203,6 +14187,8 @@ msgid ""
"Room convex hull contains a large number of planes.\n"
"Consider simplifying the room bound in order to increase performance."
msgstr ""
+"Roomã®å‡¸åŒ…ã«å¤§é‡ã®å¹³é¢ãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚\n"
+"パフォーマンスã®å‘上ã®ãŸã‚ã«ã€Roomã®å¢ƒç•Œã®å˜ç´”化を検討ã—ã¦ãã ã•ã„。"
#: scene/3d/room_group.cpp
msgid "The RoomManager should not be placed inside a RoomGroup."
@@ -14449,6 +14435,10 @@ msgid ""
"The GLES2 backend is currently in use, so these modes will act like Stretch "
"instead."
msgstr ""
+"Axis Stretchプロパティã®TileãŠã‚ˆã³Tile Fitオプションã¯ã€GLES3レンダリングãƒãƒƒ"
+"クエンドを使用ã—ã¦ã„ã‚‹å ´åˆã«ã®ã¿æœ‰åŠ¹ã§ã™ã€‚\n"
+"ç¾åœ¨GLES2ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ãŒä½¿ç”¨ã•ã‚Œã¦ã„ã‚‹ãŸã‚ã€ã“れらã®ãƒ¢ãƒ¼ãƒ‰ã¯ä»£ã‚ã‚Šã«Stretchã®"
+"よã†ã«æŒ¯ã‚‹èˆžã„ã¾ã™ã€‚"
#: scene/gui/popup.cpp
msgid ""
@@ -14493,6 +14483,10 @@ msgid ""
"Consider using a script's process loop instead of relying on a Timer for "
"very low wait times."
msgstr ""
+"タイマーã®å¾…ã¡æ™‚é–“ãŒéžå¸¸ã«çŸ­ã„ (0.05秒未満) ã®å ´åˆã€æç”»ã¾ãŸã¯ç‰©ç†ãƒ•ãƒ¬ãƒ¼ãƒ "
+"レートã«å¿œã˜ã¦å¤§å¹…ã«å‹•ä½œãŒç•°ãªã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚\n"
+"éžå¸¸ã«çŸ­ã„å¾…ã¡æ™‚é–“ã®å ´åˆã€Timerを使用ã›ãšã«ã‚¹ã‚¯ãƒªãƒ—トã®processループを使用ã™"
+"ã‚‹ã“ã¨ã‚’検討ã—ã¦ãã ã•ã„。"
#: scene/main/viewport.cpp
msgid ""
@@ -14507,15 +14501,15 @@ msgstr ""
"当ã¦ã¾ã™ã€‚"
#: scene/main/viewport.cpp
-#, fuzzy
msgid ""
"The Viewport size must be greater than or equal to 2 pixels on both "
"dimensions to render anything."
-msgstr "レンダーã™ã‚‹ã«ã¯ãƒ“ューãƒãƒ¼ãƒˆã®ã‚µã‚¤ã‚ºãŒ 0 より大ãã„å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚"
+msgstr ""
+"レンダーã™ã‚‹ã«ã¯Viewportã®ç¸¦æ¨ªãã‚Œãžã‚ŒãŒ2ピクセル以上ã§ã‚ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚"
#: scene/resources/occluder_shape.cpp
msgid "OccluderShapeSphere Set Spheres"
-msgstr ""
+msgstr "OccluderShapeSphereã®çƒå½¢ã‚’セット"
#: scene/resources/visual_shader_nodes.cpp
msgid ""
@@ -14559,7 +14553,7 @@ msgstr ""
#: servers/visual/shader_language.cpp
msgid "Fragment-stage varying could not been accessed in custom function!"
-msgstr ""
+msgstr "カスタム関数内ã§Fragment-stageã®Varyingã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã›ã‚“ã§ã—ãŸï¼"
#: servers/visual/shader_language.cpp
msgid "Assignment to function."
diff --git a/editor/translations/pt.po b/editor/translations/pt.po
index 008100444d..e78f560111 100644
--- a/editor/translations/pt.po
+++ b/editor/translations/pt.po
@@ -24,7 +24,7 @@ msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2021-09-29 02:21+0000\n"
+"PO-Revision-Date: 2021-10-21 10:31+0000\n"
"Last-Translator: João Lopes <linux-man@hotmail.com>\n"
"Language-Team: Portuguese <https://hosted.weblate.org/projects/godot-engine/"
"godot/pt/>\n"
@@ -2417,9 +2417,8 @@ msgstr ""
"heranças) não puderam ser satisfeitas."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Could not save one or more scenes!"
-msgstr "Não consegui iniciar o subprocesso!"
+msgstr "Incapaz de guardar uma ou mais cenas!"
#: editor/editor_node.cpp
msgid "Save All Scenes"
@@ -2563,7 +2562,7 @@ msgstr "Guardar alterações a '%s' antes de fechar?"
#: editor/editor_node.cpp
msgid "%s no longer exists! Please specify a new save location."
-msgstr ""
+msgstr "% não existe mais! Especifique uma nova localização para guardar."
#: editor/editor_node.cpp
msgid ""
@@ -4410,6 +4409,10 @@ msgid ""
"Selecting another resource in the FileSystem dock without clicking Reimport "
"first will discard changes made in the Import dock."
msgstr ""
+"Há alterações pendentes que ainda não foram aplicadas. Clique Reimportar "
+"para aplicar alterações feitas nas opções de importação.\n"
+"Se selecionar outro recurso na doca FileSystem sem Reimportar primeiro, "
+"serão rejeitadas alterações feitas na doca Import."
#: editor/import_dock.cpp
msgid "Import As:"
@@ -7376,14 +7379,12 @@ msgid "Move Down"
msgstr "Mover para baixo"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Next Script"
msgstr "Próximo Script"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Previous Script"
-msgstr "Script anterior"
+msgstr "Script Anterior"
#: editor/plugins/script_editor_plugin.cpp
msgid "File"
@@ -7796,9 +7797,8 @@ msgid "Left Orthogonal"
msgstr "Ortogonal Esquerda"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Left Perspective"
-msgstr "Perspetiva"
+msgstr "Perspetiva Esquerda"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Right Orthogonal"
@@ -8157,24 +8157,23 @@ msgstr "Vista Direita"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orbit View Down"
-msgstr ""
+msgstr "Vista Órbita Baixo"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orbit View Left"
-msgstr ""
+msgstr "Vista Órbita Esquerda"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orbit View Right"
-msgstr ""
+msgstr "Vista Órbita Direita"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Orbit View Up"
-msgstr "Vista de Frente"
+msgstr "Vista de Órbita Cima"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orbit View 180"
-msgstr ""
+msgstr "Vista Órbita 180"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Switch Perspective/Orthogonal View"
@@ -9032,7 +9031,7 @@ msgstr "Item Desativado"
#: editor/plugins/theme_editor_preview.cpp
msgid "Check Item"
-msgstr "Verificar item"
+msgstr "Marcar item"
#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Item"
@@ -11757,6 +11756,10 @@ msgid ""
"FileSystem dock context menu\n"
"or create an inherited scene using Scene > New Inherited Scene... instead."
msgstr ""
+"Incapaz de guardar o ramo do nó raiz como uma cena instanciada.\n"
+"Para criar uma cópia editável da cena atual, duplique-a usando o menu de "
+"contexto da doca FileSystem\n"
+"ou crie uma cena herdada usando Cena > Nova Cena Herdada..."
#: editor/scene_tree_dock.cpp
msgid ""
@@ -11764,6 +11767,9 @@ msgid ""
"To create a variation of a scene, you can make an inherited scene based on "
"the instanced scene using Scene > New Inherited Scene... instead."
msgstr ""
+"Incapaz de guardar o ramo de uma cena já instanciada.\n"
+"Para criar a variação de uma cena, pode fazer uma cena herdada baseada na "
+"cena instanciada usando Cena > Nova Cena Herdada..."
#: editor/scene_tree_dock.cpp
msgid "Save New Scene As..."
@@ -13281,6 +13287,8 @@ msgid ""
"Either Debug Keystore, Debug User AND Debug Password settings must be "
"configured OR none of them."
msgstr ""
+"Tanto a Keystore de Depuração, Utilizador de Depuração E Senha de Depuração "
+"têm de ser configuradas OU nenhuma delas."
#: platform/android/export/export_plugin.cpp
msgid "Debug keystore not configured in the Editor Settings nor in the preset."
@@ -13293,11 +13301,13 @@ msgid ""
"Either Release Keystore, Release User AND Release Password settings must be "
"configured OR none of them."
msgstr ""
+"Tanto a Keystore de Lançamento, Utilizador de Lançamento E Senha de "
+"Lançamento têm de ser configuradas OU nenhuma delas."
#: platform/android/export/export_plugin.cpp
msgid "Release keystore incorrectly configured in the export preset."
msgstr ""
-"Lançamento de keystore configurado incorretamente na predefinição exportada."
+"Keystore de lançamento configurado incorretamente na predefinição exportada."
#: platform/android/export/export_plugin.cpp
msgid "A valid Android SDK path is required in Editor Settings."
@@ -13371,6 +13381,10 @@ msgid ""
"directory.\n"
"The resulting %s is unsigned."
msgstr ""
+"'apksigner' não foi encontrado.\n"
+"Verifique se o comando está disponível na diretoria Android SDK build-"
+"tools.\n"
+"O % resultante não está assinado."
#: platform/android/export/export_plugin.cpp
msgid "Signing debug %s..."
@@ -13500,6 +13514,10 @@ msgid ""
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
+"Bibliotecas em falta no modelo de exportação para as arquiteturas "
+"selecionadas: %s.\n"
+"Construa um modelo com todas as bibliotecas necessárias, ou desmarque as "
+"arquiteturas em falta na predefinição de exportação."
#: platform/android/export/export_plugin.cpp
msgid "Adding files..."
@@ -13584,19 +13602,19 @@ msgstr "Identificador de pacote inválido:"
#: platform/osx/export/export.cpp
msgid "Notarization: code signing required."
-msgstr ""
+msgstr "Notarização: assinatura de código necessária."
#: platform/osx/export/export.cpp
msgid "Notarization: hardened runtime required."
-msgstr ""
+msgstr "Notarização: hardened runtime necessário."
#: platform/osx/export/export.cpp
msgid "Notarization: Apple ID name not specified."
-msgstr ""
+msgstr "Notarização: nome Apple ID não especificado."
#: platform/osx/export/export.cpp
msgid "Notarization: Apple ID password not specified."
-msgstr ""
+msgstr "Notarização: senha Apple ID não especificada."
#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
@@ -14028,6 +14046,9 @@ msgid ""
"longer has any effect.\n"
"To remove this warning, disable the GIProbe's Compress property."
msgstr ""
+"A propriedade GIProbe Compress foi descontinuada devido a bugs conhecidos e "
+"não tem qualquer efeito.\n"
+"Para remover este aviso desative a propriedade Compress de GIProbe."
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
@@ -14158,6 +14179,8 @@ msgid ""
"Room convex hull contains a large number of planes.\n"
"Consider simplifying the room bound in order to increase performance."
msgstr ""
+"O casco convexo do quarto contem um grande número de planos.\n"
+"Pense em simplificar os limites do quarto para melhorar o desempenho."
#: scene/3d/room_group.cpp
msgid "The RoomManager should not be placed inside a RoomGroup."
@@ -14176,6 +14199,8 @@ msgid ""
"Portal Depth Limit is set to Zero.\n"
"Only the Room that the Camera is in will render."
msgstr ""
+"Limite de Profundidade do Portal está definido como Zero.\n"
+"Só vai ser renderizado o quarto onde a Câmara está."
#: scene/3d/room_manager.cpp
msgid "There should only be one RoomManager in the SceneTree."
@@ -14186,6 +14211,8 @@ msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
msgstr ""
+"Caminho do RoomList é inválido.\n"
+"Verifique se o ramo RoomList foi atribuído no RoomManager."
#: scene/3d/room_manager.cpp
msgid "RoomList contains no Rooms, aborting."
@@ -14290,7 +14317,7 @@ msgstr "Animação não encontrada: '%s'"
#: scene/animation/animation_player.cpp
msgid "Anim Apply Reset"
-msgstr ""
+msgstr "Anim Aplicar Reinicialização"
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
@@ -14398,6 +14425,9 @@ msgid ""
"The GLES2 backend is currently in use, so these modes will act like Stretch "
"instead."
msgstr ""
+"As opções Tile e Tile Fit para as propriedades Axis Stretch só são efetivas "
+"na renderização GLES3.\n"
+"Como GLES2 está a ser usado atualmente, estes modos funcionarão como Stretch."
#: scene/gui/popup.cpp
msgid ""
@@ -14442,6 +14472,11 @@ msgid ""
"Consider using a script's process loop instead of relying on a Timer for "
"very low wait times."
msgstr ""
+"Tempos de espera do Timer muito baixos (< 0.05 segundos) podem originar "
+"comportamentos muito diferentes dependendo do renderizador ou da taxa de "
+"frames física.\n"
+"Considere usar um ciclo de processo de script em vez de depender de um Timer "
+"para tempos de espera muito baixos."
#: scene/main/viewport.cpp
msgid ""
@@ -14456,11 +14491,12 @@ msgstr ""
"RenderTarget e atribua a sua textura interna a outro nó para visualizar."
#: scene/main/viewport.cpp
-#, fuzzy
msgid ""
"The Viewport size must be greater than or equal to 2 pixels on both "
"dimensions to render anything."
-msgstr "O tamanho do viewport tem de ser maior do que 0 para renderizar."
+msgstr ""
+"O tamanho do Viewport tem de ser maior ou igual a 2 pixeis em ambas as "
+"dimensões para renderizar."
#: scene/resources/occluder_shape.cpp
msgid "OccluderShapeSphere Set Spheres"
@@ -14495,16 +14531,20 @@ msgid ""
"Varyings which assigned in 'vertex' function may not be reassigned in "
"'fragment' or 'light'."
msgstr ""
+"Variantes atribuídas na função 'vertex' não podem ser reatribuídas em "
+"'fragment' ou 'light'."
#: servers/visual/shader_language.cpp
msgid ""
"Varyings which assigned in 'fragment' function may not be reassigned in "
"'vertex' or 'light'."
msgstr ""
+"Variantes atribuídas na função 'fragment' não podem ser reatribuídas em "
+"'vertex' ou 'light'."
#: servers/visual/shader_language.cpp
msgid "Fragment-stage varying could not been accessed in custom function!"
-msgstr ""
+msgstr "Variante fragment-stage não pode ser acedida em função personalizada!"
#: servers/visual/shader_language.cpp
msgid "Assignment to function."
diff --git a/editor/translations/pt_BR.po b/editor/translations/pt_BR.po
index 804740bf4a..9e7d53c52e 100644
--- a/editor/translations/pt_BR.po
+++ b/editor/translations/pt_BR.po
@@ -124,13 +124,14 @@
# William Weber Berrutti <wwberrutti@protonmail.ch>, 2021.
# Zenvasca <zenvasca@gmail.com>, 2021.
# Wladimir Roberto Barbosa <wladrbarbosa@gmail.com>, 2021.
+# Mário Victor Ribeiro Silva <mariovictorrs@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: 2016-05-30\n"
-"PO-Revision-Date: 2021-10-09 16:52+0000\n"
-"Last-Translator: Wladimir Roberto Barbosa <wladrbarbosa@gmail.com>\n"
+"PO-Revision-Date: 2021-10-21 10:31+0000\n"
+"Last-Translator: Mário Victor Ribeiro Silva <mariovictorrs@gmail.com>\n"
"Language-Team: Portuguese (Brazil) <https://hosted.weblate.org/projects/"
"godot-engine/godot/pt_BR/>\n"
"Language: pt_BR\n"
@@ -2521,9 +2522,8 @@ msgstr ""
"herança) não foram satisfeitas."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Could not save one or more scenes!"
-msgstr "Não se pôde salvar textura convertida:"
+msgstr "Não foi possível salvar um ou mais cenas!"
#: editor/editor_node.cpp
msgid "Save All Scenes"
@@ -2665,7 +2665,7 @@ msgstr "Salvar alterações em '%s' antes de fechar?"
#: editor/editor_node.cpp
msgid "%s no longer exists! Please specify a new save location."
-msgstr ""
+msgstr "%s não existe! Por favor especifique um novo local para salvar."
#: editor/editor_node.cpp
msgid ""
@@ -2720,9 +2720,8 @@ msgid "Nothing to undo."
msgstr "Nada para desfazer."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Undo: %s"
-msgstr "Desfazer"
+msgstr "Desfazer: %s"
#: editor/editor_node.cpp
msgid "Can't redo while mouse buttons are pressed."
@@ -2733,9 +2732,8 @@ msgid "Nothing to redo."
msgstr "Nada para refazer."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Redo: %s"
-msgstr "Refazer"
+msgstr "Refazer: %s"
#: editor/editor_node.cpp
msgid "Can't reload a scene that was never saved."
@@ -3374,9 +3372,8 @@ msgid "Install from file"
msgstr "Instalar do arquivo"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Select android sources file"
-msgstr "Selecione o arquivo de fontes do Android"
+msgstr "Selecione os arquivos fontes do Android"
#: editor/editor_node.cpp
msgid ""
@@ -3463,7 +3460,6 @@ msgid "Select"
msgstr "Selecionar"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Select Current"
msgstr "Selecione Atual"
@@ -3791,9 +3787,8 @@ msgid "Uninstall these templates."
msgstr "Desinstalar esses modelos."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "There are no mirrors available."
-msgstr "Não existe o arquivo '%s'."
+msgstr "Não há espelhos disponíveis."
#: editor/export_template_manager.cpp
#, fuzzy
@@ -3809,23 +3804,20 @@ msgid "Error requesting URL:"
msgstr "Erro ao solicitar URL:"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Connecting to the mirror..."
-msgstr "Conectando..."
+msgstr "Conectando ao espelho..."
#: editor/export_template_manager.cpp
msgid "Can't resolve the requested address."
msgstr "Não é possível resolver o endereço solicitado."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Can't connect to the mirror."
-msgstr "Não foi possível conectar ao host:"
+msgstr "Não foi possível conectar ao espelho."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "No response from the mirror."
-msgstr "Sem resposta do host:"
+msgstr "Sem resposta do espelho."
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -3978,9 +3970,8 @@ msgstr ""
"As exportações de modelos estão instaladas e prontas para serem usadas."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Open Folder"
-msgstr "Abrir um arquivo"
+msgstr "Abrir Pasta"
#: editor/export_template_manager.cpp
msgid "Open the folder containing installed templates for the current version."
@@ -3996,14 +3987,12 @@ msgid "Uninstall templates for the current version."
msgstr "Valor inicial para o contador"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Download from:"
-msgstr "Erro ao baixar"
+msgstr "Baixar de:"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Open in Web Browser"
-msgstr "Rodar no Navegador"
+msgstr "Abrir no Navegador"
#: editor/export_template_manager.cpp
#, fuzzy
@@ -4029,7 +4018,6 @@ msgstr ""
"desenvolvimento."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Install from File"
msgstr "Instalar a Partir do Arquivo"
@@ -4049,14 +4037,12 @@ msgid "Cancel the download of the templates."
msgstr "Não se pôde abrir zip dos modelos de exportação."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Other Installed Versions:"
-msgstr "Versões Instaladas:"
+msgstr "Outras Versões Instaladas:"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Uninstall Template"
-msgstr "Desinstalar"
+msgstr "Desinstalar Template"
#: editor/export_template_manager.cpp
msgid "Select Template File"
@@ -4576,14 +4562,12 @@ msgid "Failed to load resource."
msgstr "Falha ao carregar recurso."
#: editor/inspector_dock.cpp
-#, fuzzy
msgid "Copy Properties"
-msgstr "Propriedades"
+msgstr "Copiar Propriedades"
#: editor/inspector_dock.cpp
-#, fuzzy
msgid "Paste Properties"
-msgstr "Propriedades"
+msgstr "Colar Propriedades"
#: editor/inspector_dock.cpp
msgid "Make Sub-Resources Unique"
@@ -4639,9 +4623,8 @@ msgid "History of recently edited objects."
msgstr "Histórico dos objetos editados recentemente."
#: editor/inspector_dock.cpp
-#, fuzzy
msgid "Open documentation for this object."
-msgstr "Abrir Documentação"
+msgstr "Abrir documentação para esse objeto."
#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
msgid "Open Documentation"
@@ -4899,9 +4882,8 @@ msgid "Blend:"
msgstr "Misturar:"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#, fuzzy
msgid "Parameter Changed:"
-msgstr "Parâmetro Modificado"
+msgstr "Parâmetro Modificado:"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
@@ -6043,9 +6025,8 @@ msgid "Drag: Rotate selected node around pivot."
msgstr "Remover nó ou trilha selecionada."
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Alt+Drag: Move selected node."
-msgstr "Alt+Arrastar: Mover"
+msgstr "Alt+Arrastar: Mover nó selecionado."
#: editor/plugins/canvas_item_editor_plugin.cpp
#, fuzzy
@@ -6299,14 +6280,12 @@ msgid "Clear Pose"
msgstr "Limpar Pose"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Add Node Here"
-msgstr "Adicionar Nó"
+msgstr "Adicionar Nó Aqui"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Instance Scene Here"
-msgstr "Instanciar Cena(s)"
+msgstr "Instanciar Cena Aqui"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
@@ -6333,34 +6312,28 @@ msgid "Zoom to 12.5%"
msgstr "Zoom para 12.5%"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Zoom to 25%"
-msgstr "Reduzir"
+msgstr "Zoom de 25%"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Zoom to 50%"
-msgstr "Reduzir"
+msgstr "Zoom de 50%"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Zoom to 100%"
-msgstr "Reduzir"
+msgstr "Zoom de 100%"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Zoom to 200%"
-msgstr "Reduzir"
+msgstr "Zoom de 200%"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Zoom to 400%"
-msgstr "Reduzir"
+msgstr "Zoom de 400%"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Zoom to 800%"
-msgstr "Reduzir"
+msgstr "Zoom de 800%"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Zoom to 1600%"
@@ -7417,9 +7390,8 @@ msgid "Occluder Set Transform"
msgstr "Limpar Transformação"
#: editor/plugins/room_manager_editor_plugin.cpp
-#, fuzzy
msgid "Center Node"
-msgstr "Criar Nó"
+msgstr "Centralizar Nó"
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
@@ -7555,12 +7527,10 @@ msgid "Move Down"
msgstr "Mover para Baixo"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Next Script"
msgstr "Próximo Script"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Previous Script"
msgstr "Script anterior"
@@ -8054,15 +8024,13 @@ msgid "None"
msgstr "Nenhum"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Rotate"
-msgstr "Status:"
+msgstr "Rotacionar"
#. TRANSLATORS: This refers to the movement that changes the position of an object.
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Translate"
-msgstr "Translação:"
+msgstr "Translação"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scale"
@@ -8102,38 +8070,32 @@ msgid "Size:"
msgstr "Tamanho:"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Objects Drawn:"
-msgstr "Objetos Desenhados"
+msgstr "Objetos Desenhados:"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Material Changes:"
-msgstr "Alterações de Material"
+msgstr "Alterações de Material:"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Shader Changes:"
-msgstr "Alterações de Shader"
+msgstr "Alterações de Shader:"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Surface Changes:"
-msgstr "Alterações de Superfície"
+msgstr "Alterações de Superfície:"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Draw Calls:"
-msgstr "Chamadas de Desenho"
+msgstr "Chamadas de Desenho:"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Vertices:"
-msgstr "Vértices"
+msgstr "Vértices:"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "FPS: %d (%s ms)"
-msgstr ""
+msgstr "FPS: %d (%s ms)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Top View."
@@ -13273,9 +13235,8 @@ msgid "Add Preload Node"
msgstr "Adicionar Nó de Pré-carregamento"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Add Node(s)"
-msgstr "Adicionar Nó"
+msgstr "Adicionar Nó(s)"
#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
@@ -13542,17 +13503,15 @@ msgstr "Selecione um dispositivo da lista"
#: platform/android/export/export_plugin.cpp
msgid "Running on %s"
-msgstr ""
+msgstr "Executando em %s"
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Exporting APK..."
-msgstr "Exportando tudo"
+msgstr "Exportando APK..."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Uninstalling..."
-msgstr "Desinstalar"
+msgstr "Desinstalando..."
#: platform/android/export/export_plugin.cpp
#, fuzzy
@@ -13565,14 +13524,12 @@ msgid "Could not install to device: %s"
msgstr "Não foi possível instanciar cena!"
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Running on device..."
-msgstr "Rodando Script Personalizado..."
+msgstr "Executando no dispositivo..."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Could not execute on device."
-msgstr "Não foi possível criar a pasta."
+msgstr "Não foi possível executar no dispositivo."
#: platform/android/export/export_plugin.cpp
msgid "Unable to find the 'apksigner' tool."
@@ -13707,9 +13664,8 @@ msgid "'apksigner' returned with error #%d"
msgstr ""
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Verifying %s..."
-msgstr "Adicionando %s..."
+msgstr "Verificando %s..."
#: platform/android/export/export_plugin.cpp
msgid "'apksigner' verification of %s failed."
@@ -13797,9 +13753,8 @@ msgstr ""
"diretório do projeto gradle por saídas."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Package not found: %s"
-msgstr "Animação não encontrada: '%s'"
+msgstr "Pacote não encontrado: '%s'"
#: platform/android/export/export_plugin.cpp
#, fuzzy
@@ -13823,9 +13778,8 @@ msgid ""
msgstr ""
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Adding files..."
-msgstr "Adicionando %s..."
+msgstr "Adicionando arquivos..."
#: platform/android/export/export_plugin.cpp
#, fuzzy
diff --git a/editor/translations/ru.po b/editor/translations/ru.po
index 56788509e1..df2c3c1cdf 100644
--- a/editor/translations/ru.po
+++ b/editor/translations/ru.po
@@ -98,12 +98,13 @@
# enderlorde <madel.laboratories@gmail.com>, 2021.
# Олег Довгер <oleg.a.dovger@gmail.com>, 2021.
# Anna Malinovskaia <tacitcoast@gmail.com>, 2021.
+# mrvladus <mrvladus@yandex.ru>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2021-09-29 02:21+0000\n"
+"PO-Revision-Date: 2021-10-21 10:31+0000\n"
"Last-Translator: Danil Alexeev <danil@alexeev.xyz>\n"
"Language-Team: Russian <https://hosted.weblate.org/projects/godot-engine/"
"godot/ru/>\n"
@@ -2497,9 +2498,8 @@ msgstr ""
"унаÑледованные) не могли быть удовлетворены."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Could not save one or more scenes!"
-msgstr "Ðевозможно Ñохранить конвертированную текÑтуру:"
+msgstr "Ðе удалоÑÑŒ Ñохранить одну или неÑколько Ñцен!"
#: editor/editor_node.cpp
msgid "Save All Scenes"
@@ -2644,6 +2644,7 @@ msgstr "Сохранить Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² «%s» перед закрытÐ
#: editor/editor_node.cpp
msgid "%s no longer exists! Please specify a new save location."
msgstr ""
+"%s больше не ÑущеÑтвует! ПожалуйÑта укажите новое меÑто Ð´Ð»Ñ ÑохранениÑ."
#: editor/editor_node.cpp
msgid ""
@@ -2785,7 +2786,7 @@ msgstr "Открыть закрытую Ñцену"
#: editor/editor_node.cpp
msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
msgstr ""
-"Ðе удаётÑÑ Ð²ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒ плагин: «%s». Ошибка ÑинтакÑичеÑкого разбора "
+"Ðе удаётÑÑ Ð²ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒ плагин: «%s». Ошибка ÑинтакÑичеÑкого разбора файла "
"конфигурации."
#: editor/editor_node.cpp
@@ -4486,6 +4487,11 @@ msgid ""
"Selecting another resource in the FileSystem dock without clicking Reimport "
"first will discard changes made in the Import dock."
msgstr ""
+"У Ð²Ð°Ñ ÐµÑÑ‚ÑŒ изменениÑ, которые ещё не были применены. Ðажмите "
+"«Переимпортировать», чтобы применить изменениÑ, внеÑённые в параметры "
+"импорта.\n"
+"ЕÑли выбрать другой реÑÑƒÑ€Ñ Ð² панели Â«Ð¤Ð°Ð¹Ð»Ð¾Ð²Ð°Ñ ÑиÑтема», не нажав Ñначала "
+"«Переимпортировать», то Ñделанные в панели «Импорт» Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ потерÑны."
#: editor/import_dock.cpp
msgid "Import As:"
@@ -7453,12 +7459,10 @@ msgid "Move Down"
msgstr "ПеремеÑтить вниз"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Next Script"
msgstr "Следующий Ñкрипт"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Previous Script"
msgstr "Предыдущий Ñкрипт"
@@ -7877,9 +7881,8 @@ msgid "Left Orthogonal"
msgstr "Левый ортогональный"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Left Perspective"
-msgstr "ПерÑпективный"
+msgstr "Левый перÑпективный"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Right Orthogonal"
@@ -8104,7 +8107,7 @@ msgstr "ПроÑлушиватель звука"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Enable Doppler"
-msgstr "Включить Ñффект Doppler"
+msgstr "Включить Ñффект Доплера"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Cinematic Preview"
@@ -8239,24 +8242,23 @@ msgstr "Вид Ñправа"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orbit View Down"
-msgstr ""
+msgstr "Вид Ñ Ð¾Ñ€Ð±Ð¸Ñ‚Ñ‹ вниз"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orbit View Left"
-msgstr ""
+msgstr "Вид Ñ Ð¾Ñ€Ð±Ð¸Ñ‚Ñ‹ влево"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orbit View Right"
-msgstr ""
+msgstr "Вид Ñ Ð¾Ñ€Ð±Ð¸Ñ‚Ñ‹ вправо"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Orbit View Up"
-msgstr "Вид Ñпереди"
+msgstr "Вид Ñ Ð¾Ñ€Ð±Ð¸Ñ‚Ñ‹ вверх"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orbit View 180"
-msgstr ""
+msgstr "Вид Ñ Ð¾Ñ€Ð±Ð¸Ñ‚Ñ‹ 180"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Switch Perspective/Orthogonal View"
@@ -12082,7 +12084,7 @@ msgstr "(ИÑточник)"
#: editor/scene_tree_editor.cpp
msgid "Node configuration warning:"
-msgstr "Конфигурации узла, предупреждение:"
+msgstr "Предупреждение о конфигурации узла:"
#: editor/scene_tree_editor.cpp
msgid ""
@@ -14565,6 +14567,11 @@ msgid ""
"Consider using a script's process loop instead of relying on a Timer for "
"very low wait times."
msgstr ""
+"Очень низкое Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ñ‚Ð°Ð¹Ð¼ÐµÑ€Ð° (< 0,05 Ñекунды) может привеÑти к "
+"значительно разному поведению, в завиÑимоÑти от чаÑтоты кадров рендеринга "
+"или физики.\n"
+"РаÑÑмотрите возможноÑÑ‚ÑŒ иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ†Ð¸ÐºÐ»Ð° обработки в Ñкрипте вмеÑто "
+"таймера Ñ Ð¾Ñ‡ÐµÐ½ÑŒ низким временем ожиданиÑ."
#: scene/main/viewport.cpp
msgid ""
@@ -14580,11 +14587,12 @@ msgstr ""
"либо узлу Ð´Ð»Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ."
#: scene/main/viewport.cpp
-#, fuzzy
msgid ""
"The Viewport size must be greater than or equal to 2 pixels on both "
"dimensions to render anything."
-msgstr "Размер окна проÑмотра должен быть больше 0 Ð´Ð»Ñ Ñ€ÐµÐ½Ð´ÐµÑ€Ð¸Ð½Ð³Ð°."
+msgstr ""
+"Размер облаÑти проÑмотра должен быть больше или равен 2 пикÑелÑм в обоих "
+"измерениÑÑ…, чтобы отобразить что-либо."
#: scene/resources/occluder_shape.cpp
msgid "OccluderShapeSphere Set Spheres"
diff --git a/editor/translations/sv.po b/editor/translations/sv.po
index 2ae502bdd5..f22e9500e1 100644
--- a/editor/translations/sv.po
+++ b/editor/translations/sv.po
@@ -3,7 +3,7 @@
# Copyright (c) 2014-2021 Godot Engine contributors (cf. AUTHORS.md).
# This file is distributed under the same license as the Godot source code.
# bergmarklund <davemcgroin@gmail.com>, 2017, 2018.
-# Christoffer Sundbom <christoffer_karlsson@live.se>, 2017.
+# Christoffer Sundbom <christoffer_karlsson@live.se>, 2017, 2021.
# Jakob Sinclair <sinclair.jakob@mailbox.org>, 2018.
# . <grenoscar@gmail.com>, 2018, 2020.
# Kristoffer Grundström <kristoffer.grundstrom1983@gmail.com>, 2018.
@@ -28,8 +28,8 @@ msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2021-08-10 21:40+0000\n"
-"Last-Translator: Kristoffer Grundström <swedishsailfishosuser@tutanota.com>\n"
+"PO-Revision-Date: 2021-10-21 10:31+0000\n"
+"Last-Translator: Christoffer Sundbom <christoffer_karlsson@live.se>\n"
"Language-Team: Swedish <https://hosted.weblate.org/projects/godot-engine/"
"godot/sv/>\n"
"Language: sv\n"
@@ -37,7 +37,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.8-dev\n"
+"X-Generator: Weblate 4.9-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -2146,9 +2146,8 @@ msgid "Methods"
msgstr "Metoder"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Theme Properties"
-msgstr "Egenskaper"
+msgstr "Tema Egenskaper"
#: editor/editor_help.cpp
msgid "Enumerations"
diff --git a/editor/translations/uk.po b/editor/translations/uk.po
index d662cfea7b..db324bbc2c 100644
--- a/editor/translations/uk.po
+++ b/editor/translations/uk.po
@@ -22,7 +22,7 @@ msgstr ""
"Project-Id-Version: Ukrainian (Godot Engine)\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2021-09-22 20:30+0000\n"
+"PO-Revision-Date: 2021-10-18 15:35+0000\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <https://hosted.weblate.org/projects/godot-engine/"
"godot/uk/>\n"
@@ -2426,9 +2426,8 @@ msgstr ""
"уÑпадковані) не задоволені."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Could not save one or more scenes!"
-msgstr "Ðе вдалоÑÑ Ð·Ð°Ð¿ÑƒÑтити підпроцеÑ!"
+msgstr "Ðе вдалоÑÑ Ð·Ð±ÐµÑ€ÐµÐ³Ñ‚Ð¸ одну або декілька Ñцен!"
#: editor/editor_node.cpp
msgid "Save All Scenes"
@@ -2571,7 +2570,7 @@ msgstr "Зберегти зміни, внеÑені до '%s' перед закÑ
#: editor/editor_node.cpp
msgid "%s no longer exists! Please specify a new save location."
-msgstr ""
+msgstr "%s вже не Ñ–Ñнує! Будь лаÑка, вкажіть нове міÑце Ð´Ð»Ñ Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ."
#: editor/editor_node.cpp
msgid ""
@@ -4421,6 +4420,11 @@ msgid ""
"Selecting another resource in the FileSystem dock without clicking Reimport "
"first will discard changes made in the Import dock."
msgstr ""
+"ВнеÑені вами зміни ще не заÑтоÑовано. ÐатиÑніть кнопку «Імпортувати "
+"повторно», щоб заÑтоÑувати зміни у параметрах імпортуваннÑ.\n"
+"Вибір іншого реÑурÑу на бічній панелі файлової ÑиÑтеми без натиÑÐºÐ°Ð½Ð½Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¸ "
+"«Імпортувати повторно» призведе до Ð²Ñ–Ð´ÐºÐ¸Ð´Ð°Ð½Ð½Ñ Ð·Ð¼Ñ–Ð½, Ñкі було внеÑено на "
+"бічній панелі імпортуваннÑ."
#: editor/import_dock.cpp
msgid "Import As:"
@@ -7400,12 +7404,10 @@ msgid "Move Down"
msgstr "ПереміÑтити вниз"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Next Script"
msgstr "ÐаÑтупний Ñкрипт"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Previous Script"
msgstr "Попередній Ñкрипт"
@@ -7824,9 +7826,8 @@ msgid "Left Orthogonal"
msgstr "Лівий ортогональний"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Left Perspective"
-msgstr "ПерÑпектива"
+msgstr "Ліва перÑпектива"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Right Orthogonal"
@@ -8185,24 +8186,23 @@ msgstr "ВиглÑд Ñправа"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orbit View Down"
-msgstr ""
+msgstr "Орбітальний вид вниз"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orbit View Left"
-msgstr ""
+msgstr "Орбітальний вид ліворуч"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orbit View Right"
-msgstr ""
+msgstr "Орбітальний вид праворуч"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Orbit View Up"
-msgstr "ВиглÑд Ñпереду"
+msgstr "Орбітальний вид згори"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orbit View 180"
-msgstr ""
+msgstr "Орбітальний вид 180"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Switch Perspective/Orthogonal View"
@@ -14554,6 +14554,11 @@ msgid ""
"Consider using a script's process loop instead of relying on a Timer for "
"very low wait times."
msgstr ""
+"Дуже малі проміжки чаÑу Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð° таймером (< 0.05 Ñекунд) можуть "
+"призводити до Ñуттєво різних результатів Ð´Ð»Ñ Ñ€Ñ–Ð·Ð½Ð¸Ñ… оброблених або фізичних "
+"чаÑтот кадрів.\n"
+"Вам варто ÑкориÑтатиÑÑ Ñ†Ð¸ÐºÐ»Ð¾Ð¼ процеÑу Ñкрипту заміÑÑ‚ÑŒ Timer Ð´Ð»Ñ Ð´ÑƒÐ¶Ðµ малих "
+"проміжків очікуваннÑ."
#: scene/main/viewport.cpp
msgid ""
@@ -14568,13 +14573,12 @@ msgstr ""
"пов'Ñзати Ñ—Ñ— внутрішню текÑтуру з одним із вузлів Ð´Ð»Ñ Ð¿Ð¾ÐºÐ°Ð·Ñƒ."
#: scene/main/viewport.cpp
-#, fuzzy
msgid ""
"The Viewport size must be greater than or equal to 2 pixels on both "
"dimensions to render anything."
msgstr ""
"Щоб програма могла хоч щоÑÑŒ показати, розмір Ð¿Ð¾Ð»Ñ Ð¿ÐµÑ€ÐµÐ³Ð»Ñду має бути більшим "
-"за 0."
+"або рівним 2 пікÑелÑм в обох вимірах."
#: scene/resources/occluder_shape.cpp
msgid "OccluderShapeSphere Set Spheres"
diff --git a/editor/translations/zh_CN.po b/editor/translations/zh_CN.po
index f17a8af827..82159d534e 100644
--- a/editor/translations/zh_CN.po
+++ b/editor/translations/zh_CN.po
@@ -79,12 +79,15 @@
# suplife <2634557184@qq.com>, 2021.
# luoji <564144019@qq.com>, 2021.
# zeng haochen <m18621006730@163.com>, 2021.
+# Sam Sun <oppositenormal@outlook.com>, 2021.
+# è‹è½¼ <youwanyuyu@gmail.com>, 2021.
+# nitenook <admin@alterbaum.net>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: Chinese (Simplified) (Godot Engine)\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: 2018-01-20 12:15+0200\n"
-"PO-Revision-Date: 2021-10-08 03:03+0000\n"
+"PO-Revision-Date: 2021-10-21 10:31+0000\n"
"Last-Translator: Haoyu Qiu <timothyqiu32@gmail.com>\n"
"Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/"
"godot-engine/godot/zh_Hans/>\n"
@@ -2435,9 +2438,8 @@ msgid ""
msgstr "无法ä¿å­˜åœºæ™¯ã€‚å¯èƒ½æ˜¯å› ä¸ºä¾èµ–项(实例或继承)无法满足。"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Could not save one or more scenes!"
-msgstr "无法ä¿å­˜è½¬æ¢çš„贴图:"
+msgstr "无法ä¿å­˜ä¸€ä¸ªæˆ–多个场景ï¼"
#: editor/editor_node.cpp
msgid "Save All Scenes"
@@ -2573,7 +2575,7 @@ msgstr "是å¦åœ¨å…³é—­å‰ä¿å­˜å¯¹ “%s†的更改?"
#: editor/editor_node.cpp
msgid "%s no longer exists! Please specify a new save location."
-msgstr ""
+msgstr "路径 %s å·²ä¸å­˜åœ¨ï¼è¯·é‡æ–°é€‰æ‹©æ–°çš„ä¿å­˜è·¯å¾„。"
#: editor/editor_node.cpp
msgid ""
@@ -4362,6 +4364,8 @@ msgid ""
"Selecting another resource in the FileSystem dock without clicking Reimport "
"first will discard changes made in the Import dock."
msgstr ""
+"有些修改未被应用。点击“é‡æ–°å¯¼å…¥â€æ¥åº”用导入的修改。\n"
+"若在选择å¦ä¸€ä¸ªèµ„æºå‰æ²¡æœ‰ç‚¹å‡»â€œé‡æ–°å¯¼å…¥â€ï¼Œåˆ™ä¼šå¿½ç•¥å¯¼å…¥çš„修改。"
#: editor/import_dock.cpp
msgid "Import As:"
@@ -7289,12 +7293,10 @@ msgid "Move Down"
msgstr "å‘下移动"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Next Script"
msgstr "下一个脚本"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Previous Script"
msgstr "上一个脚本"
@@ -7709,9 +7711,8 @@ msgid "Left Orthogonal"
msgstr "正交左视图"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Left Perspective"
-msgstr "é€è§†"
+msgstr "é€è§†å·¦è§†å›¾"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Right Orthogonal"
@@ -8067,24 +8068,23 @@ msgstr "å³è§†å›¾"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orbit View Down"
-msgstr ""
+msgstr "视图å‘下环绕"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orbit View Left"
-msgstr ""
+msgstr "视图å‘左环绕"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orbit View Right"
-msgstr ""
+msgstr "视图å‘å³çŽ¯ç»•"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Orbit View Up"
-msgstr "å‰è§†å›¾"
+msgstr "视图å‘上环绕"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orbit View 180"
-msgstr ""
+msgstr "视图环绕至背é¢"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Switch Perspective/Orthogonal View"
@@ -14195,6 +14195,9 @@ msgid ""
"Consider using a script's process loop instead of relying on a Timer for "
"very low wait times."
msgstr ""
+"计时器等待时间éžå¸¸çŸ­ï¼ˆå°äºŽ 0.05 秒)时å¯èƒ½ä¼šæ ¹æ®æ¸²æŸ“帧率和物ç†å¸§çŽ‡çš„ä¸åŒè€Œè¡¨"
+"现得æžä¸ºä¸åŒã€‚\n"
+"建议使用脚本的 process 循环代替此类计时器。"
#: scene/main/viewport.cpp
msgid ""
@@ -14203,16 +14206,15 @@ msgid ""
"obtain a size. Otherwise, make it a RenderTarget and assign its internal "
"texture to some node for display."
msgstr ""
-"这个 Viewport 未被设置为渲染目标。如果你想让其直接在å±å¹•ä¸Šæ˜¾ç¤ºå†…容,请使其æˆ"
-"为 Control çš„å­èŠ‚点,这样一æ¥è¯¥ Viewport æ‰ä¼šæœ‰å¤§å°ã€‚å¦åˆ™è¯·ä¸ºå…¶è®¾ç½® "
+"这个视窗未被设置为渲染目标。如果你想让其直接在å±å¹•ä¸Šæ˜¾ç¤ºå†…容,请使其æˆä¸º "
+"Control çš„å­èŠ‚点,这样一æ¥è¯¥ Viewport æ‰ä¼šæœ‰å¤§å°ã€‚å¦åˆ™è¯·ä¸ºå…¶è®¾ç½® "
"RenderTarget 并分é…其内部纹ç†æ¥æ˜¾ç¤ºã€‚"
#: scene/main/viewport.cpp
-#, fuzzy
msgid ""
"The Viewport size must be greater than or equal to 2 pixels on both "
"dimensions to render anything."
-msgstr "Viewport 大å°å¤§äºŽ 0 æ—¶æ‰èƒ½è¿›è¡Œæ¸²æŸ“。"
+msgstr "Viewport 的宽高都大于等于 2 åƒç´ æ—¶æ‰èƒ½è¿›è¡Œæ¸²æŸ“。"
#: scene/resources/occluder_shape.cpp
msgid "OccluderShapeSphere Set Spheres"
diff --git a/main/main.cpp b/main/main.cpp
index 2a9446d4ed..d4a6216e35 100644
--- a/main/main.cpp
+++ b/main/main.cpp
@@ -918,6 +918,10 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
cmdline_tool = true;
dump_extension_api = true;
print_line("Dumping Extension API");
+ // Hack. Not needed but otherwise we end up detecting that this should
+ // run the project instead of a cmdline tool.
+ // Needs full refactoring to fix properly.
+ main_args.push_back(I->get());
} else if (I->get() == "--export" || I->get() == "--export-debug" ||
I->get() == "--export-pack") { // Export project
// Actually handling is done in start().
@@ -2068,6 +2072,8 @@ bool Main::start() {
if (check_only) {
if (!script_res->is_valid()) {
OS::get_singleton()->set_exit_code(EXIT_FAILURE);
+ } else {
+ OS::get_singleton()->set_exit_code(EXIT_SUCCESS);
}
return false;
}
diff --git a/misc/dist/osx/editor.entitlements b/misc/dist/osx/editor.entitlements
index 5496f65dcc..d0137910a3 100644
--- a/misc/dist/osx/editor.entitlements
+++ b/misc/dist/osx/editor.entitlements
@@ -2,11 +2,19 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
- <key>com.apple.security.device.audio-input</key>
+ <key>com.apple.security.cs.allow-dyld-environment-variables</key>
<true/>
- <key>com.apple.security.device.camera</key>
+ <key>com.apple.security.cs.allow-jit</key>
+ <true/>
+ <key>com.apple.security.cs.allow-unsigned-executable-memory</key>
+ <true/>
+ <key>com.apple.security.cs.disable-executable-page-protection</key>
<true/>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
+ <key>com.apple.security.device.audio-input</key>
+ <true/>
+ <key>com.apple.security.device.camera</key>
+ <true/>
</dict>
</plist>
diff --git a/misc/dist/osx/editor_mono.entitlements b/misc/dist/osx/editor_mono.entitlements
deleted file mode 100644
index c61c287652..0000000000
--- a/misc/dist/osx/editor_mono.entitlements
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>com.apple.security.cs.allow-dyld-environment-variables</key>
- <true/>
- <key>com.apple.security.cs.allow-jit</key>
- <true/>
- <key>com.apple.security.cs.allow-unsigned-executable-memory</key>
- <true/>
- <key>com.apple.security.cs.disable-library-validation</key>
- <true/>
- <key>com.apple.security.device.audio-input</key>
- <true/>
- <key>com.apple.security.device.camera</key>
- <true/>
-</dict>
-</plist>
diff --git a/misc/hooks/pre-commit-clang-format b/misc/hooks/pre-commit-clang-format
index 81bc412944..3112f1af5f 100755
--- a/misc/hooks/pre-commit-clang-format
+++ b/misc/hooks/pre-commit-clang-format
@@ -77,10 +77,10 @@ fi
# To get consistent formatting, we recommend contributors to use the same
# clang-format version as CI.
RECOMMENDED_CLANG_FORMAT_MAJOR_MIN="11"
-RECOMMENDED_CLANG_FORMAT_MAJOR_MAX="12"
+RECOMMENDED_CLANG_FORMAT_MAJOR_MAX="13"
if [ ! -x "$CLANG_FORMAT" ] ; then
- message="Error: clang-format executable not found. Please install clang-format $RECOMMENDED_CLANG_FORMAT_MAJOR.x.x."
+ message="Error: clang-format executable not found. Please install clang-format $RECOMMENDED_CLANG_FORMAT_MAJOR_MAX."
if [ ! -t 1 ] ; then
if [ -x "$ZENITY" ] ; then
@@ -108,7 +108,7 @@ CLANG_FORMAT_VERSION="$(clang-format --version | sed "s/[^0-9\.]*\([0-9\.]*\).*/
CLANG_FORMAT_MAJOR="$(echo "$CLANG_FORMAT_VERSION" | cut -d. -f1)"
if [[ "$CLANG_FORMAT_MAJOR" -lt "$RECOMMENDED_CLANG_FORMAT_MAJOR_MIN" || "$CLANG_FORMAT_MAJOR" -gt "$RECOMMENDED_CLANG_FORMAT_MAJOR_MAX" ]]; then
- echo "Warning: Your clang-format binary is the wrong version ($CLANG_FORMAT_VERSION, expected between $RECOMMENDED_CLANG_FORMAT_MAJOR_MIN.x.x and $RECOMMENDED_CLANG_FORMAT_MAJOR_MAX.x.x)."
+ echo "Warning: Your clang-format binary is the wrong version ($CLANG_FORMAT_VERSION, expected between $RECOMMENDED_CLANG_FORMAT_MAJOR_MIN and $RECOMMENDED_CLANG_FORMAT_MAJOR_MAX)."
echo " Consider upgrading or downgrading clang-format as formatting may not be applied correctly."
fi
diff --git a/misc/scripts/compare_extension_api.py b/misc/scripts/compare_extension_api.py
new file mode 100755
index 0000000000..f96db4278c
--- /dev/null
+++ b/misc/scripts/compare_extension_api.py
@@ -0,0 +1,11 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+import sys
+
+# TODO:
+# Add a process that compares the original godot-cpp/godot-headers/extension_api.json with the new extension_api.json (both passed as arguments) and reports any API calls that have been removed.
+# If we only have additions or no changes to the file, we pass
+# For now we deem this too early because the API isn't stable enough yet.
+
+sys.exit(0)
diff --git a/modules/bullet/area_bullet.h b/modules/bullet/area_bullet.h
index 7cf666c119..c8b516c951 100644
--- a/modules/bullet/area_bullet.h
+++ b/modules/bullet/area_bullet.h
@@ -145,7 +145,6 @@ public:
virtual void dispatch_callbacks();
void call_event(CollisionObjectBullet *p_otherObject, PhysicsServer3D::AreaBodyStatus p_status);
- void set_on_state_change(ObjectID p_id, const StringName &p_method, const Variant &p_udata = Variant());
void scratch();
void clear_overlaps(bool p_notify);
diff --git a/modules/bullet/soft_body_bullet.cpp b/modules/bullet/soft_body_bullet.cpp
index 81b832fb42..3a2370ff31 100644
--- a/modules/bullet/soft_body_bullet.cpp
+++ b/modules/bullet/soft_body_bullet.cpp
@@ -116,6 +116,7 @@ void SoftBodyBullet::set_soft_mesh(RID p_mesh) {
}
Array arrays = RenderingServer::get_singleton()->mesh_surface_get_arrays(soft_mesh, 0);
+ ERR_FAIL_COND(arrays.is_empty());
bool success = set_trimesh_body_shape(arrays[RS::ARRAY_INDEX], arrays[RS::ARRAY_VERTEX]);
if (!success) {
diff --git a/modules/denoise/config.py b/modules/denoise/config.py
index 49a1f036ed..6f650354cb 100644
--- a/modules/denoise/config.py
+++ b/modules/denoise/config.py
@@ -1,11 +1,12 @@
def can_build(env, platform):
# Thirdparty dependency OpenImage Denoise includes oneDNN library
- # which only supports 64-bit architectures.
+ # and the version we use only supports x86_64.
# It's also only relevant for tools build and desktop platforms,
# as doing lightmap generation and denoising on Android or HTML5
# would be a bit far-fetched.
desktop_platforms = ["linuxbsd", "osx", "windows"]
- return env["tools"] and platform in desktop_platforms and env["bits"] == "64" and env["arch"] != "arm64"
+ supported_arch = env["bits"] == "64" and env["arch"] != "arm64" and not env["arch"].startswith("rv")
+ return env["tools"] and platform in desktop_platforms and supported_arch
def configure(env):
diff --git a/modules/gdnative/nativescript/nativescript.cpp b/modules/gdnative/nativescript/nativescript.cpp
index fb46bafb3c..368eb67fa6 100644
--- a/modules/gdnative/nativescript/nativescript.cpp
+++ b/modules/gdnative/nativescript/nativescript.cpp
@@ -1139,15 +1139,12 @@ void NativeScriptLanguage::profiling_start() {
MutexLock lock(mutex);
profile_data.clear();
- profiling = true;
#endif
}
void NativeScriptLanguage::profiling_stop() {
#ifdef DEBUG_ENABLED
MutexLock lock(mutex);
-
- profiling = false;
#endif
}
diff --git a/modules/gdnative/nativescript/nativescript.h b/modules/gdnative/nativescript/nativescript.h
index a7647e8c59..2364c6c0f6 100644
--- a/modules/gdnative/nativescript/nativescript.h
+++ b/modules/gdnative/nativescript/nativescript.h
@@ -269,7 +269,6 @@ private:
};
Map<StringName, ProfileData> profile_data;
- bool profiling = false;
public:
// These two maps must only be touched on the main thread
@@ -295,8 +294,6 @@ public:
return singleton;
}
- void _hacky_api_anchor();
-
_FORCE_INLINE_ void set_language_index(int p_idx) { lang_idx = p_idx; }
#ifndef NO_THREADS
diff --git a/modules/gdnative/pluginscript/pluginscript_instance.h b/modules/gdnative/pluginscript/pluginscript_instance.h
index bdae265db2..81e711bafc 100644
--- a/modules/gdnative/pluginscript/pluginscript_instance.h
+++ b/modules/gdnative/pluginscript/pluginscript_instance.h
@@ -69,8 +69,6 @@ public:
virtual ScriptLanguage *get_language();
- void set_path(const String &p_path);
-
virtual const Vector<Multiplayer::RPCConfig> get_rpc_methods() const;
virtual void refcount_incremented();
diff --git a/modules/gdscript/language_server/gdscript_language_server.h b/modules/gdscript/language_server/gdscript_language_server.h
index 85a44a8cc1..f1413f0133 100644
--- a/modules/gdscript/language_server/gdscript_language_server.h
+++ b/modules/gdscript/language_server/gdscript_language_server.h
@@ -50,10 +50,8 @@ class GDScriptLanguageServer : public EditorPlugin {
private:
void _notification(int p_what);
- void _iteration();
public:
- Error parse_script_file(const String &p_path);
GDScriptLanguageServer();
void start();
void stop();
diff --git a/modules/gltf/gltf_document.h b/modules/gltf/gltf_document.h
index a1d82a4649..f2f0b439a5 100644
--- a/modules/gltf/gltf_document.h
+++ b/modules/gltf/gltf_document.h
@@ -269,8 +269,6 @@ private:
Error _reparent_non_joint_skeleton_subtrees(
Ref<GLTFState> state, Ref<GLTFSkeleton> skeleton,
const Vector<GLTFNodeIndex> &non_joints);
- Error _reparent_to_fake_joint(Ref<GLTFState> state, Ref<GLTFSkeleton> skeleton,
- const GLTFNodeIndex node_index);
Error _determine_skeleton_roots(Ref<GLTFState> state,
const GLTFSkeletonIndex skel_i);
Error _create_skeletons(Ref<GLTFState> state);
diff --git a/modules/mbedtls/packet_peer_mbed_dtls.h b/modules/mbedtls/packet_peer_mbed_dtls.h
index 6554c74a21..92e6ab88c4 100644
--- a/modules/mbedtls/packet_peer_mbed_dtls.h
+++ b/modules/mbedtls/packet_peer_mbed_dtls.h
@@ -59,8 +59,6 @@ protected:
Ref<SSLContextMbedTLS> ssl_ctx;
mbedtls_timing_delay_context timer;
- static void _bind_methods();
-
Error _do_handshake();
int _set_cookie();
diff --git a/modules/mbedtls/ssl_context_mbedtls.h b/modules/mbedtls/ssl_context_mbedtls.h
index 1b55a54a10..5692dec1b6 100644
--- a/modules/mbedtls/ssl_context_mbedtls.h
+++ b/modules/mbedtls/ssl_context_mbedtls.h
@@ -67,8 +67,6 @@ class SSLContextMbedTLS : public RefCounted {
protected:
bool inited = false;
- static PackedByteArray _read_file(String p_path);
-
public:
static void print_mbedtls_error(int p_ret);
diff --git a/modules/mbedtls/stream_peer_mbedtls.h b/modules/mbedtls/stream_peer_mbedtls.h
index b89d7fb238..407479e3cc 100644
--- a/modules/mbedtls/stream_peer_mbedtls.h
+++ b/modules/mbedtls/stream_peer_mbedtls.h
@@ -50,8 +50,6 @@ private:
protected:
Ref<SSLContextMbedTLS> ssl_ctx;
- static void _bind_methods();
-
Error _do_handshake();
public:
diff --git a/modules/mono/config.py b/modules/mono/config.py
index 4c851a2989..df02d9a309 100644
--- a/modules/mono/config.py
+++ b/modules/mono/config.py
@@ -2,7 +2,7 @@ supported_platforms = ["windows", "osx", "linuxbsd", "server", "android", "haiku
def can_build(env, platform):
- return True
+ return not env["arch"].startswith("rv")
def configure(env):
diff --git a/modules/mono/editor/GodotTools/GodotTools.IdeMessaging/Client.cs b/modules/mono/editor/GodotTools/GodotTools.IdeMessaging/Client.cs
index 1d7bfaf0a4..bc09e1ebf9 100644
--- a/modules/mono/editor/GodotTools/GodotTools.IdeMessaging/Client.cs
+++ b/modules/mono/editor/GodotTools/GodotTools.IdeMessaging/Client.cs
@@ -121,15 +121,20 @@ namespace GodotTools.IdeMessaging
this.messageHandler = messageHandler;
this.logger = logger;
- // TODO: Need to fetch the project data dir name from ProjectSettings instead of defaulting to ".godot"
string projectMetadataDir = Path.Combine(godotProjectDir, ".godot", "mono", "metadata");
+ // FileSystemWatcher requires an existing directory
+ if (!Directory.Exists(projectMetadataDir)) {
+ // Check if the non hidden version exists
+ string nonHiddenProjectMetadataDir = Path.Combine(godotProjectDir, "godot", "mono", "metadata");
+ if (Directory.Exists(nonHiddenProjectMetadataDir)) {
+ projectMetadataDir = nonHiddenProjectMetadataDir;
+ } else {
+ Directory.CreateDirectory(projectMetadataDir);
+ }
+ }
MetaFilePath = Path.Combine(projectMetadataDir, GodotIdeMetadata.DefaultFileName);
- // FileSystemWatcher requires an existing directory
- if (!Directory.Exists(projectMetadataDir))
- Directory.CreateDirectory(projectMetadataDir);
-
fsWatcher = new FileSystemWatcher(projectMetadataDir, GodotIdeMetadata.DefaultFileName);
}
diff --git a/modules/navigation/navigation_mesh_generator.cpp b/modules/navigation/navigation_mesh_generator.cpp
index bb6bc578a4..8fd3a13e1f 100644
--- a/modules/navigation/navigation_mesh_generator.cpp
+++ b/modules/navigation/navigation_mesh_generator.cpp
@@ -489,7 +489,7 @@ NavigationMeshGenerator::~NavigationMeshGenerator() {
}
void NavigationMeshGenerator::bake(Ref<NavigationMesh> p_nav_mesh, Node *p_node) {
- ERR_FAIL_COND(!p_nav_mesh.is_valid());
+ ERR_FAIL_COND_MSG(!p_nav_mesh.is_valid(), "Invalid navigation mesh.");
#ifdef TOOLS_ENABLED
EditorProgress *ep(nullptr);
diff --git a/modules/raycast/config.py b/modules/raycast/config.py
index 5de36c5322..2f8bacd4ae 100644
--- a/modules/raycast/config.py
+++ b/modules/raycast/config.py
@@ -1,5 +1,7 @@
def can_build(env, platform):
# Depends on Embree library, which only supports x86_64 and aarch64.
+ if env["arch"].startswith("rv"):
+ return False
if platform == "android":
return env["android_arch"] in ["arm64v8", "x86_64"]
diff --git a/modules/regex/config.py b/modules/regex/config.py
index df9f44cb95..1248a8374d 100644
--- a/modules/regex/config.py
+++ b/modules/regex/config.py
@@ -1,5 +1,5 @@
def can_build(env, platform):
- return True
+ return not env["arch"].startswith("rv")
def configure(env):
diff --git a/modules/theora/config.py b/modules/theora/config.py
index b063ed51f9..7f354a8fda 100644
--- a/modules/theora/config.py
+++ b/modules/theora/config.py
@@ -1,4 +1,6 @@
def can_build(env, platform):
+ if env["arch"].startswith("rv"):
+ return False
return env.module_check_dependencies("theora", ["ogg", "vorbis"])
diff --git a/modules/visual_script/visual_script_nodes.h b/modules/visual_script/visual_script_nodes.h
index bf2d8e9683..78881f0a53 100644
--- a/modules/visual_script/visual_script_nodes.h
+++ b/modules/visual_script/visual_script_nodes.h
@@ -90,12 +90,6 @@ public:
void set_stack_size(int p_size);
int get_stack_size() const;
- void set_return_type_enabled(bool p_returns);
- bool is_return_type_enabled() const;
-
- void set_return_type(Variant::Type p_type);
- Variant::Type get_return_type() const;
-
void set_rpc_mode(Multiplayer::RPCMode p_mode);
Multiplayer::RPCMode get_rpc_mode() const;
diff --git a/platform/android/audio_driver_opensl.h b/platform/android/audio_driver_opensl.h
index e3efaddba2..fcc2513f3f 100644
--- a/platform/android/audio_driver_opensl.h
+++ b/platform/android/audio_driver_opensl.h
@@ -59,7 +59,6 @@ class AudioDriverOpenSL : public AudioDriver {
SLObjectItf sl;
SLEngineItf EngineItf;
SLObjectItf OutputMix;
- SLVolumeItf volumeItf;
SLObjectItf player;
SLObjectItf recorder;
SLAndroidSimpleBufferQueueItf bufferQueueItf;
@@ -68,7 +67,6 @@ class AudioDriverOpenSL : public AudioDriver {
SLDataFormat_PCM pcm;
SLDataSink audioSink;
SLDataLocator_OutputMix locator_outputmix;
- SLBufferQueueState state;
static AudioDriverOpenSL *s_ad;
@@ -89,8 +87,6 @@ class AudioDriverOpenSL : public AudioDriver {
virtual Error capture_init_device();
public:
- void set_singleton();
-
virtual const char *get_name() const;
virtual Error init();
diff --git a/platform/android/java/build.gradle b/platform/android/java/build.gradle
index 87bb2ea218..efdcc6c77b 100644
--- a/platform/android/java/build.gradle
+++ b/platform/android/java/build.gradle
@@ -158,9 +158,9 @@ def templateBuildTasks() {
/**
* Master task used to coordinate the tasks defined above to generate the set of Godot templates.
*/
-task generateGodotTemplates(type: GradleBuild) {
- startParameter.excludedTaskNames = templateExcludedBuildTask()
- tasks = templateBuildTasks()
+task generateGodotTemplates {
+ gradle.startParameter.excludedTaskNames += templateExcludedBuildTask()
+ dependsOn = templateBuildTasks()
finalizedBy 'zipCustomBuild'
}
@@ -168,12 +168,12 @@ task generateGodotTemplates(type: GradleBuild) {
/**
* Generates the same output as generateGodotTemplates but with dev symbols
*/
-task generateDevTemplate (type: GradleBuild) {
+task generateDevTemplate {
// add parameter to set symbols to true
- startParameter.projectProperties += [doNotStrip: true]
+ gradle.startParameter.projectProperties += [doNotStrip: true]
- startParameter.excludedTaskNames = templateExcludedBuildTask()
- tasks = templateBuildTasks()
+ gradle.startParameter.excludedTaskNames += templateExcludedBuildTask()
+ dependsOn = templateBuildTasks()
finalizedBy 'zipCustomBuild'
}
diff --git a/platform/android/os_android.cpp b/platform/android/os_android.cpp
index 034885aa32..94ca51f75a 100644
--- a/platform/android/os_android.cpp
+++ b/platform/android/os_android.cpp
@@ -263,7 +263,6 @@ Size2i OS_Android::get_display_size() const {
void OS_Android::set_context_is_16_bits(bool p_is_16) {
#if defined(OPENGL_ENABLED)
- //use_16bits_fbo = p_is_16;
//if (rasterizer)
// rasterizer->set_force_16_bits_fbo(p_is_16);
#endif
@@ -325,7 +324,6 @@ OS_Android::OS_Android(GodotJavaWrapper *p_godot_java, GodotIOJavaWrapper *p_god
#if defined(OPENGL_ENABLED)
gl_extensions = nullptr;
use_gl2 = false;
- use_16bits_fbo = false;
#endif
#if defined(VULKAN_ENABLED)
diff --git a/platform/android/os_android.h b/platform/android/os_android.h
index ce8083388f..9bb37325cf 100644
--- a/platform/android/os_android.h
+++ b/platform/android/os_android.h
@@ -48,7 +48,6 @@ private:
bool use_apk_expansion;
#if defined(OPENGL_ENABLED)
- bool use_16bits_fbo;
const char *gl_extensions;
#endif
diff --git a/platform/javascript/package-lock.json b/platform/javascript/package-lock.json
index 8003619576..1bc11c7ccf 100644
--- a/platform/javascript/package-lock.json
+++ b/platform/javascript/package-lock.json
@@ -109,9 +109,9 @@
"dev": true
},
"ansi-regex": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
- "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true
},
"ansi-styles": {
diff --git a/platform/linuxbsd/detect.py b/platform/linuxbsd/detect.py
index 1b9dd1e8f3..4b3804d049 100644
--- a/platform/linuxbsd/detect.py
+++ b/platform/linuxbsd/detect.py
@@ -119,6 +119,13 @@ def configure(env):
if env["bits"] == "default":
env["bits"] = "64" if is64 else "32"
+ if env["arch"] == "" and platform.machine() == "riscv64":
+ env["arch"] = "rv64"
+
+ if env["arch"] == "rv64":
+ # G = General-purpose extensions, C = Compression extension (very common).
+ env.Append(CCFLAGS=["-march=rv64gc"])
+
## Compiler configuration
if "CXX" in env and "clang" in os.path.basename(env["CXX"]):
diff --git a/platform/osx/joypad_osx.h b/platform/osx/joypad_osx.h
index c060c3d523..3048ecf39e 100644
--- a/platform/osx/joypad_osx.h
+++ b/platform/osx/joypad_osx.h
@@ -106,7 +106,6 @@ private:
int get_joy_ref(IOHIDDeviceRef p_device) const;
void poll_joypads() const;
- void setup_joypad_objects();
void config_hid_manager(CFArrayRef p_matching_array) const;
void joypad_vibration_start(int p_id, float p_magnitude, float p_duration, uint64_t p_timestamp);
diff --git a/platform/uwp/os_uwp.h b/platform/uwp/os_uwp.h
index 7945f409a1..9398573ee1 100644
--- a/platform/uwp/os_uwp.h
+++ b/platform/uwp/os_uwp.h
@@ -117,11 +117,6 @@ private:
Windows::System::Display::DisplayRequest ^ display_request;
- void _post_dpad(DWORD p_dpad, int p_device, bool p_pressed);
-
- void _drag_event(int idx, UINT uMsg, WPARAM wParam, LPARAM lParam);
- void _touch_event(int idx, UINT uMsg, WPARAM wParam, LPARAM lParam);
-
ref class ManagedType {
public:
property bool alert_close_handle;
diff --git a/scene/2d/audio_listener_2d.h b/scene/2d/audio_listener_2d.h
index 875887acc6..454053bc4a 100644
--- a/scene/2d/audio_listener_2d.h
+++ b/scene/2d/audio_listener_2d.h
@@ -43,8 +43,6 @@ private:
friend class Viewport;
protected:
- void _update_listener();
-
bool _set(const StringName &p_name, const Variant &p_value);
bool _get(const StringName &p_name, Variant &r_ret) const;
void _get_property_list(List<PropertyInfo> *p_list) const;
diff --git a/scene/2d/collision_object_2d.cpp b/scene/2d/collision_object_2d.cpp
index 6916f832d0..28facd09ce 100644
--- a/scene/2d/collision_object_2d.cpp
+++ b/scene/2d/collision_object_2d.cpp
@@ -454,7 +454,7 @@ void CollisionObject2D::shape_owner_clear_shapes(uint32_t p_owner) {
}
uint32_t CollisionObject2D::shape_find_owner(int p_shape_index) const {
- ERR_FAIL_INDEX_V(p_shape_index, total_subshapes, 0);
+ ERR_FAIL_INDEX_V(p_shape_index, total_subshapes, UINT32_MAX);
for (const KeyValue<uint32_t, ShapeData> &E : shapes) {
for (int i = 0; i < E.value.shapes.size(); i++) {
@@ -465,7 +465,7 @@ uint32_t CollisionObject2D::shape_find_owner(int p_shape_index) const {
}
//in theory it should be unreachable
- return 0;
+ ERR_FAIL_V_MSG(UINT32_MAX, "Can't find owner for shape index " + itos(p_shape_index) + ".");
}
void CollisionObject2D::set_pickable(bool p_enabled) {
diff --git a/scene/2d/collision_polygon_2d.cpp b/scene/2d/collision_polygon_2d.cpp
index 271a4da705..00bfa62449 100644
--- a/scene/2d/collision_polygon_2d.cpp
+++ b/scene/2d/collision_polygon_2d.cpp
@@ -131,6 +131,7 @@ void CollisionPolygon2D::_notification(int p_what) {
} break;
case NOTIFICATION_DRAW: {
+ ERR_FAIL_COND(!is_inside_tree());
if (!Engine::get_singleton()->is_editor_hint() && !get_tree()->is_debugging_collisions_hint()) {
break;
}
diff --git a/scene/2d/collision_shape_2d.cpp b/scene/2d/collision_shape_2d.cpp
index 54cb851216..c7742c7ba5 100644
--- a/scene/2d/collision_shape_2d.cpp
+++ b/scene/2d/collision_shape_2d.cpp
@@ -88,6 +88,8 @@ void CollisionShape2D::_notification(int p_what) {
} break;
case NOTIFICATION_DRAW: {
+ ERR_FAIL_COND(!is_inside_tree());
+
if (!Engine::get_singleton()->is_editor_hint() && !get_tree()->is_debugging_collisions_hint()) {
break;
}
diff --git a/scene/2d/cpu_particles_2d.h b/scene/2d/cpu_particles_2d.h
index 4990d443e3..391f51224e 100644
--- a/scene/2d/cpu_particles_2d.h
+++ b/scene/2d/cpu_particles_2d.h
@@ -201,7 +201,6 @@ public:
void set_explosiveness_ratio(real_t p_ratio);
void set_randomness_ratio(real_t p_ratio);
void set_lifetime_randomness(double p_random);
- void set_visibility_aabb(const Rect2 &p_aabb);
void set_use_local_coordinates(bool p_enable);
void set_speed_scale(double p_scale);
@@ -213,7 +212,6 @@ public:
real_t get_explosiveness_ratio() const;
real_t get_randomness_ratio() const;
double get_lifetime_randomness() const;
- Rect2 get_visibility_aabb() const;
bool get_use_local_coordinates() const;
double get_speed_scale() const;
@@ -226,9 +224,6 @@ public:
void set_draw_order(DrawOrder p_order);
DrawOrder get_draw_order() const;
- void set_draw_passes(int p_count);
- int get_draw_passes() const;
-
void set_texture(const Ref<Texture2D> &p_texture);
Ref<Texture2D> get_texture() const;
@@ -264,7 +259,6 @@ public:
void set_emission_points(const Vector<Vector2> &p_points);
void set_emission_normals(const Vector<Vector2> &p_normals);
void set_emission_colors(const Vector<Color> &p_colors);
- void set_emission_point_count(int p_count);
void set_scale_curve_x(Ref<Curve> p_scale_curve);
void set_scale_curve_y(Ref<Curve> p_scale_curve);
void set_split_scale(bool p_split_scale);
@@ -275,7 +269,6 @@ public:
Vector<Vector2> get_emission_points() const;
Vector<Vector2> get_emission_normals() const;
Vector<Color> get_emission_colors() const;
- int get_emission_point_count() const;
Ref<Curve> get_scale_curve_x() const;
Ref<Curve> get_scale_curve_y() const;
bool get_split_scale();
diff --git a/scene/2d/mesh_instance_2d.cpp b/scene/2d/mesh_instance_2d.cpp
index 15008390b7..58bff97da9 100644
--- a/scene/2d/mesh_instance_2d.cpp
+++ b/scene/2d/mesh_instance_2d.cpp
@@ -96,6 +96,10 @@ Rect2 MeshInstance2D::_edit_get_rect() const {
return Node2D::_edit_get_rect();
}
+
+bool MeshInstance2D::_edit_use_rect() const {
+ return mesh.is_valid();
+}
#endif
MeshInstance2D::MeshInstance2D() {
diff --git a/scene/2d/mesh_instance_2d.h b/scene/2d/mesh_instance_2d.h
index adfda4cf7f..f94d53da7d 100644
--- a/scene/2d/mesh_instance_2d.h
+++ b/scene/2d/mesh_instance_2d.h
@@ -48,6 +48,7 @@ protected:
public:
#ifdef TOOLS_ENABLED
virtual Rect2 _edit_get_rect() const override;
+ virtual bool _edit_use_rect() const override;
#endif
void set_mesh(const Ref<Mesh> &p_mesh);
diff --git a/scene/2d/navigation_agent_2d.cpp b/scene/2d/navigation_agent_2d.cpp
index 2f00978123..7faa964407 100644
--- a/scene/2d/navigation_agent_2d.cpp
+++ b/scene/2d/navigation_agent_2d.cpp
@@ -184,7 +184,7 @@ Vector2 NavigationAgent2D::get_target_location() const {
Vector2 NavigationAgent2D::get_next_location() {
update_navigation();
if (navigation_path.size() == 0) {
- ERR_FAIL_COND_V(agent_parent == nullptr, Vector2());
+ ERR_FAIL_COND_V_MSG(agent_parent == nullptr, Vector2(), "The agent has no parent.");
return agent_parent->get_global_position();
} else {
return navigation_path[nav_path_index];
@@ -192,7 +192,7 @@ Vector2 NavigationAgent2D::get_next_location() {
}
real_t NavigationAgent2D::distance_to_target() const {
- ERR_FAIL_COND_V(agent_parent == nullptr, 0.0);
+ ERR_FAIL_COND_V_MSG(agent_parent == nullptr, 0.0, "The agent has no parent.");
return agent_parent->get_global_position().distance_to(target_location);
}
diff --git a/scene/2d/ray_cast_2d.cpp b/scene/2d/ray_cast_2d.cpp
index 3ac2128c2e..0a8e9e2a58 100644
--- a/scene/2d/ray_cast_2d.cpp
+++ b/scene/2d/ray_cast_2d.cpp
@@ -157,6 +157,7 @@ void RayCast2D::_notification(int p_what) {
} break;
case NOTIFICATION_DRAW: {
+ ERR_FAIL_COND(!is_inside_tree());
if (!Engine::get_singleton()->is_editor_hint() && !get_tree()->is_debugging_collisions_hint()) {
break;
}
diff --git a/scene/3d/audio_listener_3d.h b/scene/3d/audio_listener_3d.h
index 492cacb0e9..31de3b4fb1 100644
--- a/scene/3d/audio_listener_3d.h
+++ b/scene/3d/audio_listener_3d.h
@@ -63,9 +63,6 @@ public:
virtual Transform3D get_listener_transform() const;
- void set_visible_layers(uint32_t p_layers);
- uint32_t get_visible_layers() const;
-
AudioListener3D();
~AudioListener3D();
};
diff --git a/scene/3d/collision_object_3d.cpp b/scene/3d/collision_object_3d.cpp
index 814ed5c2a7..fd891a5e13 100644
--- a/scene/3d/collision_object_3d.cpp
+++ b/scene/3d/collision_object_3d.cpp
@@ -648,7 +648,7 @@ void CollisionObject3D::shape_owner_clear_shapes(uint32_t p_owner) {
}
uint32_t CollisionObject3D::shape_find_owner(int p_shape_index) const {
- ERR_FAIL_INDEX_V(p_shape_index, total_subshapes, 0);
+ ERR_FAIL_INDEX_V(p_shape_index, total_subshapes, UINT32_MAX);
for (const KeyValue<uint32_t, ShapeData> &E : shapes) {
for (int i = 0; i < E.value.shapes.size(); i++) {
@@ -659,7 +659,7 @@ uint32_t CollisionObject3D::shape_find_owner(int p_shape_index) const {
}
//in theory it should be unreachable
- return 0;
+ ERR_FAIL_V_MSG(UINT32_MAX, "Can't find owner for shape index " + itos(p_shape_index) + ".");
}
CollisionObject3D::CollisionObject3D(RID p_rid, bool p_area) {
diff --git a/scene/3d/cpu_particles_3d.h b/scene/3d/cpu_particles_3d.h
index 160814ead4..aca7328a27 100644
--- a/scene/3d/cpu_particles_3d.h
+++ b/scene/3d/cpu_particles_3d.h
@@ -209,7 +209,6 @@ public:
void set_explosiveness_ratio(real_t p_ratio);
void set_randomness_ratio(real_t p_ratio);
void set_lifetime_randomness(double p_random);
- void set_visibility_aabb(const AABB &p_aabb);
void set_use_local_coordinates(bool p_enable);
void set_speed_scale(double p_scale);
@@ -221,7 +220,6 @@ public:
real_t get_explosiveness_ratio() const;
real_t get_randomness_ratio() const;
double get_lifetime_randomness() const;
- AABB get_visibility_aabb() const;
bool get_use_local_coordinates() const;
double get_speed_scale() const;
@@ -234,9 +232,6 @@ public:
void set_draw_order(DrawOrder p_order);
DrawOrder get_draw_order() const;
- void set_draw_passes(int p_count);
- int get_draw_passes() const;
-
void set_mesh(const Ref<Mesh> &p_mesh);
Ref<Mesh> get_mesh() const;
@@ -275,7 +270,6 @@ public:
void set_emission_points(const Vector<Vector3> &p_points);
void set_emission_normals(const Vector<Vector3> &p_normals);
void set_emission_colors(const Vector<Color> &p_colors);
- void set_emission_point_count(int p_count);
void set_emission_ring_axis(Vector3 p_axis);
void set_emission_ring_height(real_t p_height);
void set_emission_ring_radius(real_t p_radius);
@@ -291,7 +285,6 @@ public:
Vector<Vector3> get_emission_points() const;
Vector<Vector3> get_emission_normals() const;
Vector<Color> get_emission_colors() const;
- int get_emission_point_count() const;
Vector3 get_emission_ring_axis() const;
real_t get_emission_ring_height() const;
real_t get_emission_ring_radius() const;
diff --git a/scene/3d/navigation_agent_3d.cpp b/scene/3d/navigation_agent_3d.cpp
index c2d5c757db..1bc7d20c19 100644
--- a/scene/3d/navigation_agent_3d.cpp
+++ b/scene/3d/navigation_agent_3d.cpp
@@ -192,7 +192,7 @@ Vector3 NavigationAgent3D::get_target_location() const {
Vector3 NavigationAgent3D::get_next_location() {
update_navigation();
if (navigation_path.size() == 0) {
- ERR_FAIL_COND_V(agent_parent == nullptr, Vector3());
+ ERR_FAIL_COND_V_MSG(agent_parent == nullptr, Vector3(), "The agent has no parent.");
return agent_parent->get_global_transform().origin;
} else {
return navigation_path[nav_path_index] - Vector3(0, navigation_height_offset, 0);
@@ -200,7 +200,7 @@ Vector3 NavigationAgent3D::get_next_location() {
}
real_t NavigationAgent3D::distance_to_target() const {
- ERR_FAIL_COND_V(agent_parent == nullptr, 0.0);
+ ERR_FAIL_COND_V_MSG(agent_parent == nullptr, 0.0, "The agent has no parent.");
return agent_parent->get_global_transform().origin.distance_to(target_location);
}
diff --git a/scene/3d/navigation_region_3d.cpp b/scene/3d/navigation_region_3d.cpp
index 8a51a259f7..473368cf69 100644
--- a/scene/3d/navigation_region_3d.cpp
+++ b/scene/3d/navigation_region_3d.cpp
@@ -162,7 +162,7 @@ void _bake_navigation_mesh(void *p_user_data) {
}
void NavigationRegion3D::bake_navigation_mesh() {
- ERR_FAIL_COND(bake_thread.is_started());
+ ERR_FAIL_COND_MSG(bake_thread.is_started(), "Unable to start another bake request. The navigation mesh bake thread is already baking a navigation mesh.");
BakeThreadsArgs *args = memnew(BakeThreadsArgs);
args->nav_region = this;
diff --git a/scene/3d/node_3d.cpp b/scene/3d/node_3d.cpp
index c96204cf60..5293dd3f0a 100644
--- a/scene/3d/node_3d.cpp
+++ b/scene/3d/node_3d.cpp
@@ -484,14 +484,14 @@ void Node3D::_update_gizmos() {
#endif
}
-#ifdef TOOLS_ENABLED
void Node3D::set_disable_gizmos(bool p_enabled) {
+#ifdef TOOLS_ENABLED
data.gizmos_disabled = p_enabled;
if (!p_enabled) {
clear_gizmos();
}
-}
#endif
+}
void Node3D::set_disable_scale(bool p_enabled) {
data.disable_scale = p_enabled;
diff --git a/scene/3d/soft_dynamic_body_3d.cpp b/scene/3d/soft_dynamic_body_3d.cpp
index 9fceb21790..903eedb58b 100644
--- a/scene/3d/soft_dynamic_body_3d.cpp
+++ b/scene/3d/soft_dynamic_body_3d.cpp
@@ -250,7 +250,7 @@ void SoftDynamicBody3D::_notification(int p_what) {
RID space = get_world_3d()->get_space();
PhysicsServer3D::get_singleton()->soft_body_set_space(physics_rid, space);
- prepare_physics_server();
+ _prepare_physics_server();
} break;
case NOTIFICATION_READY: {
@@ -284,13 +284,13 @@ void SoftDynamicBody3D::_notification(int p_what) {
case NOTIFICATION_DISABLED: {
if (is_inside_tree() && (disable_mode == DISABLE_MODE_REMOVE)) {
- prepare_physics_server();
+ _prepare_physics_server();
}
} break;
case NOTIFICATION_ENABLED: {
if (is_inside_tree() && (disable_mode == DISABLE_MODE_REMOVE)) {
- prepare_physics_server();
+ _prepare_physics_server();
}
} break;
@@ -378,7 +378,7 @@ void SoftDynamicBody3D::_bind_methods() {
TypedArray<String> SoftDynamicBody3D::get_configuration_warnings() const {
TypedArray<String> warnings = Node::get_configuration_warnings();
- if (get_mesh().is_null()) {
+ if (mesh.is_null()) {
warnings.push_back(TTR("This body will be ignored until you set a mesh."));
}
@@ -407,11 +407,17 @@ void SoftDynamicBody3D::_update_physics_server() {
}
void SoftDynamicBody3D::_draw_soft_mesh() {
- if (get_mesh().is_null()) {
+ if (mesh.is_null()) {
return;
}
- const RID mesh_rid = get_mesh()->get_rid();
+ RID mesh_rid = mesh->get_rid();
+ if (owned_mesh != mesh_rid) {
+ _become_mesh_owner();
+ mesh_rid = mesh->get_rid();
+ PhysicsServer3D::get_singleton()->soft_body_set_mesh(physics_rid, mesh_rid);
+ }
+
if (!rendering_server_handler.is_ready(mesh_rid)) {
rendering_server_handler.prepare(mesh_rid, 0);
@@ -430,11 +436,11 @@ void SoftDynamicBody3D::_draw_soft_mesh() {
rendering_server_handler.commit_changes();
}
-void SoftDynamicBody3D::prepare_physics_server() {
+void SoftDynamicBody3D::_prepare_physics_server() {
#ifdef TOOLS_ENABLED
if (Engine::get_singleton()->is_editor_hint()) {
- if (get_mesh().is_valid()) {
- PhysicsServer3D::get_singleton()->soft_body_set_mesh(physics_rid, get_mesh()->get_rid());
+ if (mesh.is_valid()) {
+ PhysicsServer3D::get_singleton()->soft_body_set_mesh(physics_rid, mesh->get_rid());
} else {
PhysicsServer3D::get_singleton()->soft_body_set_mesh(physics_rid, RID());
}
@@ -443,9 +449,13 @@ void SoftDynamicBody3D::prepare_physics_server() {
}
#endif
- if (get_mesh().is_valid() && (is_enabled() || (disable_mode != DISABLE_MODE_REMOVE))) {
- become_mesh_owner();
- PhysicsServer3D::get_singleton()->soft_body_set_mesh(physics_rid, get_mesh()->get_rid());
+ if (mesh.is_valid() && (is_enabled() || (disable_mode != DISABLE_MODE_REMOVE))) {
+ RID mesh_rid = mesh->get_rid();
+ if (owned_mesh != mesh_rid) {
+ _become_mesh_owner();
+ mesh_rid = mesh->get_rid();
+ }
+ PhysicsServer3D::get_singleton()->soft_body_set_mesh(physics_rid, mesh_rid);
RS::get_singleton()->connect("frame_pre_draw", callable_mp(this, &SoftDynamicBody3D::_draw_soft_mesh));
} else {
PhysicsServer3D::get_singleton()->soft_body_set_mesh(physics_rid, RID());
@@ -455,38 +465,32 @@ void SoftDynamicBody3D::prepare_physics_server() {
}
}
-void SoftDynamicBody3D::become_mesh_owner() {
- if (mesh.is_null()) {
- return;
- }
+void SoftDynamicBody3D::_become_mesh_owner() {
+ Vector<Ref<Material>> copy_materials;
+ copy_materials.append_array(surface_override_materials);
- if (!mesh_owner) {
- mesh_owner = true;
+ ERR_FAIL_COND(!mesh->get_surface_count());
- Vector<Ref<Material>> copy_materials;
- copy_materials.append_array(surface_override_materials);
+ // Get current mesh array and create new mesh array with necessary flag for SoftDynamicBody
+ Array surface_arrays = mesh->surface_get_arrays(0);
+ Array surface_blend_arrays = mesh->surface_get_blend_shape_arrays(0);
+ Dictionary surface_lods = mesh->surface_get_lods(0);
+ uint32_t surface_format = mesh->surface_get_format(0);
- ERR_FAIL_COND(!mesh->get_surface_count());
+ surface_format |= Mesh::ARRAY_FLAG_USE_DYNAMIC_UPDATE;
- // Get current mesh array and create new mesh array with necessary flag for SoftDynamicBody
- Array surface_arrays = mesh->surface_get_arrays(0);
- Array surface_blend_arrays = mesh->surface_get_blend_shape_arrays(0);
- Dictionary surface_lods = mesh->surface_get_lods(0);
- uint32_t surface_format = mesh->surface_get_format(0);
+ Ref<ArrayMesh> soft_mesh;
+ soft_mesh.instantiate();
+ soft_mesh->add_surface_from_arrays(Mesh::PRIMITIVE_TRIANGLES, surface_arrays, surface_blend_arrays, surface_lods, surface_format);
+ soft_mesh->surface_set_material(0, mesh->surface_get_material(0));
- surface_format |= Mesh::ARRAY_FLAG_USE_DYNAMIC_UPDATE;
+ set_mesh(soft_mesh);
- Ref<ArrayMesh> soft_mesh;
- soft_mesh.instantiate();
- soft_mesh->add_surface_from_arrays(Mesh::PRIMITIVE_TRIANGLES, surface_arrays, surface_blend_arrays, surface_lods, surface_format);
- soft_mesh->surface_set_material(0, mesh->surface_get_material(0));
-
- set_mesh(soft_mesh);
-
- for (int i = copy_materials.size() - 1; 0 <= i; --i) {
- set_surface_override_material(i, copy_materials[i]);
- }
+ for (int i = copy_materials.size() - 1; 0 <= i; --i) {
+ set_surface_override_material(i, copy_materials[i]);
}
+
+ owned_mesh = soft_mesh->get_rid();
}
void SoftDynamicBody3D::set_collision_mask(uint32_t p_mask) {
@@ -548,16 +552,10 @@ void SoftDynamicBody3D::set_disable_mode(DisableMode p_mode) {
return;
}
- bool inside_tree = is_inside_tree();
-
- if (inside_tree && (disable_mode == DISABLE_MODE_REMOVE)) {
- prepare_physics_server();
- }
-
disable_mode = p_mode;
- if (inside_tree && (disable_mode == DISABLE_MODE_REMOVE)) {
- prepare_physics_server();
+ if (mesh.is_valid() && is_inside_tree() && !is_enabled()) {
+ _prepare_physics_server();
}
}
diff --git a/scene/3d/soft_dynamic_body_3d.h b/scene/3d/soft_dynamic_body_3d.h
index 5e7fbfe29e..57e116aa05 100644
--- a/scene/3d/soft_dynamic_body_3d.h
+++ b/scene/3d/soft_dynamic_body_3d.h
@@ -90,7 +90,7 @@ private:
DisableMode disable_mode = DISABLE_MODE_REMOVE;
- bool mesh_owner = false;
+ RID owned_mesh;
uint32_t collision_mask = 1;
uint32_t collision_layer = 1;
NodePath parent_collision_ignore;
@@ -106,6 +106,12 @@ private:
void _update_pickable();
+ void _update_physics_server();
+ void _draw_soft_mesh();
+
+ void _prepare_physics_server();
+ void _become_mesh_owner();
+
protected:
bool _set(const StringName &p_name, const Variant &p_value);
bool _get(const StringName &p_name, Variant &r_ret) const;
@@ -120,14 +126,7 @@ protected:
TypedArray<String> get_configuration_warnings() const override;
-protected:
- void _update_physics_server();
- void _draw_soft_mesh();
-
public:
- void prepare_physics_server();
- void become_mesh_owner();
-
RID get_physics_rid() const { return physics_rid; }
void set_collision_mask(uint32_t p_mask);
diff --git a/scene/3d/sprite_3d.h b/scene/3d/sprite_3d.h
index 90c2a309e1..61448c0e32 100644
--- a/scene/3d/sprite_3d.h
+++ b/scene/3d/sprite_3d.h
@@ -118,12 +118,6 @@ public:
void set_flip_v(bool p_flip);
bool is_flipped_v() const;
- void set_region_enabled(bool p_region);
- bool is_region_enabled() const;
-
- void set_region_rect(const Rect2 &p_region_rect);
- Rect2 get_region_rect() const;
-
void set_modulate(const Color &p_color);
Color get_modulate() const;
diff --git a/scene/animation/animation_player.h b/scene/animation/animation_player.h
index 21e309efe0..d9d88b5510 100644
--- a/scene/animation/animation_player.h
+++ b/scene/animation/animation_player.h
@@ -301,7 +301,6 @@ public:
void set_current_animation(const String &p_anim);
String get_assigned_animation() const;
void set_assigned_animation(const String &p_anim);
- void stop_all();
void set_active(bool p_active);
bool is_active() const;
bool is_valid() const;
diff --git a/scene/animation/animation_tree.h b/scene/animation/animation_tree.h
index 21b49937a7..5abea39d20 100644
--- a/scene/animation/animation_tree.h
+++ b/scene/animation/animation_tree.h
@@ -57,8 +57,6 @@ public:
Vector<Input> inputs;
- real_t process_input(int p_input, real_t p_time, bool p_seek, real_t p_blend);
-
friend class AnimationTree;
struct AnimationState {
@@ -85,7 +83,6 @@ public:
State *state = nullptr;
real_t _pre_process(const StringName &p_base_path, AnimationNode *p_parent, State *p_state, real_t p_time, bool p_seek, const Vector<StringName> &p_connections);
- void _pre_update_animations(HashMap<NodePath, int> *track_map);
//all this is temporary
StringName base_path;
@@ -110,8 +107,6 @@ protected:
void _validate_property(PropertyInfo &property) const override;
- void _set_parent(Object *p_parent);
-
GDVIRTUAL0RC(Dictionary, _get_child_nodes)
GDVIRTUAL0RC(Array, _get_parameter_list)
GDVIRTUAL1RC(Ref<AnimationNode>, _get_child_by_name, StringName)
@@ -265,7 +260,6 @@ private:
AnimationNode::State state;
bool cache_valid = false;
void _node_removed(Node *p_node);
- void _caches_cleared();
void _clear_caches();
bool _update_caches(AnimationPlayer *player);
diff --git a/scene/gui/control.cpp b/scene/gui/control.cpp
index 973074397b..e4048fbf09 100644
--- a/scene/gui/control.cpp
+++ b/scene/gui/control.cpp
@@ -637,7 +637,9 @@ void Control::_notification(int p_notification) {
}
} else {
//is a regular root control or top_level
- data.RI = get_viewport()->_gui_add_root_control(this);
+ Viewport *viewport = get_viewport();
+ ERR_FAIL_COND(!viewport);
+ data.RI = viewport->_gui_add_root_control(this);
}
data.parent_canvas_item = get_parent_item();
@@ -646,7 +648,9 @@ void Control::_notification(int p_notification) {
data.parent_canvas_item->connect("item_rect_changed", callable_mp(this, &Control::_size_changed));
} else {
//connect viewport
- get_viewport()->connect("size_changed", callable_mp(this, &Control::_size_changed));
+ Viewport *viewport = get_viewport();
+ ERR_FAIL_COND(!viewport);
+ viewport->connect("size_changed", callable_mp(this, &Control::_size_changed));
}
} break;
case NOTIFICATION_EXIT_CANVAS: {
@@ -655,7 +659,9 @@ void Control::_notification(int p_notification) {
data.parent_canvas_item = nullptr;
} else if (!is_set_as_top_level()) {
//disconnect viewport
- get_viewport()->disconnect("size_changed", callable_mp(this, &Control::_size_changed));
+ Viewport *viewport = get_viewport();
+ ERR_FAIL_COND(!viewport);
+ viewport->disconnect("size_changed", callable_mp(this, &Control::_size_changed));
}
if (data.RI) {
diff --git a/scene/gui/control.h b/scene/gui/control.h
index b551a2e299..02ab336ef0 100644
--- a/scene/gui/control.h
+++ b/scene/gui/control.h
@@ -233,9 +233,6 @@ private:
static constexpr unsigned properties_managed_by_container_count = 11;
static String properties_managed_by_container[properties_managed_by_container_count];
- // used internally
- Control *_find_control_at_pos(CanvasItem *p_node, const Point2 &p_pos, const Transform2D &p_xform, Transform2D &r_inv_xform);
-
void _window_find_focus_neighbor(const Vector2 &p_dir, Node *p_at, const Point2 *p_points, real_t p_min, real_t &r_closest_dist, Control **r_closest);
Control *_get_focus_neighbor(Side p_side, int p_count = 0);
@@ -250,7 +247,6 @@ private:
void _update_minimum_size();
void _clear_size_warning();
- void _update_scroll();
void _compute_offsets(Rect2 p_rect, const real_t p_anchors[4], real_t (&r_offsets)[4]);
void _compute_anchors(Rect2 p_rect, const real_t p_offsets[4], real_t (&r_anchors)[4]);
diff --git a/scene/gui/line_edit.cpp b/scene/gui/line_edit.cpp
index c2c93e3be9..dda1151273 100644
--- a/scene/gui/line_edit.cpp
+++ b/scene/gui/line_edit.cpp
@@ -2276,33 +2276,33 @@ void LineEdit::_ensure_menu() {
menu_dir = memnew(PopupMenu);
menu_dir->set_name("DirMenu");
- menu_dir->add_radio_check_item(RTR("Same as layout direction"), MENU_DIR_INHERITED);
- menu_dir->add_radio_check_item(RTR("Auto-detect direction"), MENU_DIR_AUTO);
- menu_dir->add_radio_check_item(RTR("Left-to-right"), MENU_DIR_LTR);
- menu_dir->add_radio_check_item(RTR("Right-to-left"), MENU_DIR_RTL);
- menu->add_child(menu_dir);
+ menu_dir->add_radio_check_item(RTR("Same as Layout Direction"), MENU_DIR_INHERITED);
+ menu_dir->add_radio_check_item(RTR("Auto-Detect Direction"), MENU_DIR_AUTO);
+ menu_dir->add_radio_check_item(RTR("Left-to-Right"), MENU_DIR_LTR);
+ menu_dir->add_radio_check_item(RTR("Right-to-Left"), MENU_DIR_RTL);
+ menu->add_child(menu_dir, false, INTERNAL_MODE_FRONT);
menu_ctl = memnew(PopupMenu);
menu_ctl->set_name("CTLMenu");
- menu_ctl->add_item(RTR("Left-to-right mark (LRM)"), MENU_INSERT_LRM);
- menu_ctl->add_item(RTR("Right-to-left mark (RLM)"), MENU_INSERT_RLM);
- menu_ctl->add_item(RTR("Start of left-to-right embedding (LRE)"), MENU_INSERT_LRE);
- menu_ctl->add_item(RTR("Start of right-to-left embedding (RLE)"), MENU_INSERT_RLE);
- menu_ctl->add_item(RTR("Start of left-to-right override (LRO)"), MENU_INSERT_LRO);
- menu_ctl->add_item(RTR("Start of right-to-left override (RLO)"), MENU_INSERT_RLO);
- menu_ctl->add_item(RTR("Pop direction formatting (PDF)"), MENU_INSERT_PDF);
+ menu_ctl->add_item(RTR("Left-to-Right Mark (LRM)"), MENU_INSERT_LRM);
+ menu_ctl->add_item(RTR("Right-to-Left Mark (RLM)"), MENU_INSERT_RLM);
+ menu_ctl->add_item(RTR("Start of Left-to-Right Embedding (LRE)"), MENU_INSERT_LRE);
+ menu_ctl->add_item(RTR("Start of Right-to-Left Embedding (RLE)"), MENU_INSERT_RLE);
+ menu_ctl->add_item(RTR("Start of Left-to-Right Override (LRO)"), MENU_INSERT_LRO);
+ menu_ctl->add_item(RTR("Start of Right-to-Left Override (RLO)"), MENU_INSERT_RLO);
+ menu_ctl->add_item(RTR("Pop Direction Formatting (PDF)"), MENU_INSERT_PDF);
menu_ctl->add_separator();
- menu_ctl->add_item(RTR("Arabic letter mark (ALM)"), MENU_INSERT_ALM);
- menu_ctl->add_item(RTR("Left-to-right isolate (LRI)"), MENU_INSERT_LRI);
- menu_ctl->add_item(RTR("Right-to-left isolate (RLI)"), MENU_INSERT_RLI);
- menu_ctl->add_item(RTR("First strong isolate (FSI)"), MENU_INSERT_FSI);
- menu_ctl->add_item(RTR("Pop direction isolate (PDI)"), MENU_INSERT_PDI);
+ menu_ctl->add_item(RTR("Arabic Letter Mark (ALM)"), MENU_INSERT_ALM);
+ menu_ctl->add_item(RTR("Left-to-Right Isolate (LRI)"), MENU_INSERT_LRI);
+ menu_ctl->add_item(RTR("Right-to-Left Isolate (RLI)"), MENU_INSERT_RLI);
+ menu_ctl->add_item(RTR("First Strong Isolate (FSI)"), MENU_INSERT_FSI);
+ menu_ctl->add_item(RTR("Pop Direction Isolate (PDI)"), MENU_INSERT_PDI);
menu_ctl->add_separator();
- menu_ctl->add_item(RTR("Zero width joiner (ZWJ)"), MENU_INSERT_ZWJ);
- menu_ctl->add_item(RTR("Zero width non-joiner (ZWNJ)"), MENU_INSERT_ZWNJ);
- menu_ctl->add_item(RTR("Word joiner (WJ)"), MENU_INSERT_WJ);
- menu_ctl->add_item(RTR("Soft hyphen (SHY)"), MENU_INSERT_SHY);
- menu->add_child(menu_ctl);
+ menu_ctl->add_item(RTR("Zero-Width Joiner (ZWJ)"), MENU_INSERT_ZWJ);
+ menu_ctl->add_item(RTR("Zero-Width Non-Joiner (ZWNJ)"), MENU_INSERT_ZWNJ);
+ menu_ctl->add_item(RTR("Word Joiner (WJ)"), MENU_INSERT_WJ);
+ menu_ctl->add_item(RTR("Soft Hyphen (SHY)"), MENU_INSERT_SHY);
+ menu->add_child(menu_ctl, false, INTERNAL_MODE_FRONT);
menu->connect("id_pressed", callable_mp(this, &LineEdit::menu_option));
menu_dir->connect("id_pressed", callable_mp(this, &LineEdit::menu_option));
@@ -2329,12 +2329,12 @@ void LineEdit::_ensure_menu() {
menu->add_item(RTR("Redo"), MENU_REDO, is_shortcut_keys_enabled() ? _get_menu_action_accelerator("ui_redo") : 0);
}
menu->add_separator();
- menu->add_submenu_item(RTR("Text writing direction"), "DirMenu");
+ menu->add_submenu_item(RTR("Text Writing Direction"), "DirMenu");
menu->add_separator();
- menu->add_check_item(RTR("Display control characters"), MENU_DISPLAY_UCC);
+ menu->add_check_item(RTR("Display Control Characters"), MENU_DISPLAY_UCC);
menu->set_item_checked(menu->get_item_index(MENU_DISPLAY_UCC), draw_control_chars);
if (editable) {
- menu->add_submenu_item(RTR("Insert control character"), "CTLMenu");
+ menu->add_submenu_item(RTR("Insert Control Character"), "CTLMenu");
}
menu_dir->set_item_checked(menu_dir->get_item_index(MENU_DIR_INHERITED), text_direction == TEXT_DIRECTION_INHERITED);
menu_dir->set_item_checked(menu_dir->get_item_index(MENU_DIR_AUTO), text_direction == TEXT_DIRECTION_AUTO);
diff --git a/scene/gui/line_edit.h b/scene/gui/line_edit.h
index cd7737e5fe..94179ce05b 100644
--- a/scene/gui/line_edit.h
+++ b/scene/gui/line_edit.h
@@ -189,7 +189,6 @@ private:
void _toggle_draw_caret();
void clear_internal();
- void changed_internal();
void _editor_settings_changed();
diff --git a/scene/gui/popup.h b/scene/gui/popup.h
index c7090e7231..8458a75eef 100644
--- a/scene/gui/popup.h
+++ b/scene/gui/popup.h
@@ -80,7 +80,6 @@ protected:
virtual Size2 _get_contents_minimum_size() const override;
public:
- void set_child_rect(Control *p_child);
PopupPanel();
};
diff --git a/scene/gui/rich_text_label.cpp b/scene/gui/rich_text_label.cpp
index 88633466b9..31767dd263 100644
--- a/scene/gui/rich_text_label.cpp
+++ b/scene/gui/rich_text_label.cpp
@@ -2817,12 +2817,12 @@ bool RichTextLabel::is_scroll_following() const {
return scroll_follow;
}
-Error RichTextLabel::parse_bbcode(const String &p_bbcode) {
+void RichTextLabel::parse_bbcode(const String &p_bbcode) {
clear();
- return append_text(p_bbcode);
+ append_text(p_bbcode);
}
-Error RichTextLabel::append_text(const String &p_bbcode) {
+void RichTextLabel::append_text(const String &p_bbcode) {
int pos = 0;
List<String> tag_stack;
@@ -3545,8 +3545,6 @@ Error RichTextLabel::append_text(const String &p_bbcode) {
break;
}
}
-
- return OK;
}
void RichTextLabel::scroll_to_paragraph(int p_paragraph) {
diff --git a/scene/gui/rich_text_label.h b/scene/gui/rich_text_label.h
index 94f02a3989..48186ca8b8 100644
--- a/scene/gui/rich_text_label.h
+++ b/scene/gui/rich_text_label.h
@@ -552,8 +552,8 @@ public:
String get_selected_text() const;
void selection_copy();
- Error parse_bbcode(const String &p_bbcode);
- Error append_text(const String &p_bbcode);
+ void parse_bbcode(const String &p_bbcode);
+ void append_text(const String &p_bbcode);
void set_use_bbcode(bool p_enable);
bool is_using_bbcode() const;
diff --git a/scene/gui/tab_bar.h b/scene/gui/tab_bar.h
index 1d84d6dbc8..411a62b1d9 100644
--- a/scene/gui/tab_bar.h
+++ b/scene/gui/tab_bar.h
@@ -83,7 +83,6 @@ private:
Vector<Tab> tabs;
int current = 0;
int previous = 0;
- int _get_top_margin() const;
TabAlign tab_align = ALIGN_CENTER;
bool clip_tabs = true;
int rb_hover = -1;
diff --git a/scene/gui/text_edit.cpp b/scene/gui/text_edit.cpp
index d84f409a70..8cb3b23020 100644
--- a/scene/gui/text_edit.cpp
+++ b/scene/gui/text_edit.cpp
@@ -5195,32 +5195,32 @@ void TextEdit::_generate_context_menu() {
menu_dir = memnew(PopupMenu);
menu_dir->set_name("DirMenu");
- menu_dir->add_radio_check_item(RTR("Same as layout direction"), MENU_DIR_INHERITED);
- menu_dir->add_radio_check_item(RTR("Auto-detect direction"), MENU_DIR_AUTO);
- menu_dir->add_radio_check_item(RTR("Left-to-right"), MENU_DIR_LTR);
- menu_dir->add_radio_check_item(RTR("Right-to-left"), MENU_DIR_RTL);
+ menu_dir->add_radio_check_item(RTR("Same as Layout Direction"), MENU_DIR_INHERITED);
+ menu_dir->add_radio_check_item(RTR("Auto-Detect Direction"), MENU_DIR_AUTO);
+ menu_dir->add_radio_check_item(RTR("Left-to-Right"), MENU_DIR_LTR);
+ menu_dir->add_radio_check_item(RTR("Right-to-Left"), MENU_DIR_RTL);
menu->add_child(menu_dir, false, INTERNAL_MODE_FRONT);
menu_ctl = memnew(PopupMenu);
menu_ctl->set_name("CTLMenu");
- menu_ctl->add_item(RTR("Left-to-right mark (LRM)"), MENU_INSERT_LRM);
- menu_ctl->add_item(RTR("Right-to-left mark (RLM)"), MENU_INSERT_RLM);
- menu_ctl->add_item(RTR("Start of left-to-right embedding (LRE)"), MENU_INSERT_LRE);
- menu_ctl->add_item(RTR("Start of right-to-left embedding (RLE)"), MENU_INSERT_RLE);
- menu_ctl->add_item(RTR("Start of left-to-right override (LRO)"), MENU_INSERT_LRO);
- menu_ctl->add_item(RTR("Start of right-to-left override (RLO)"), MENU_INSERT_RLO);
- menu_ctl->add_item(RTR("Pop direction formatting (PDF)"), MENU_INSERT_PDF);
+ menu_ctl->add_item(RTR("Left-to-Right Mark (LRM)"), MENU_INSERT_LRM);
+ menu_ctl->add_item(RTR("Right-to-Left Mark (RLM)"), MENU_INSERT_RLM);
+ menu_ctl->add_item(RTR("Start of Left-to-Right Embedding (LRE)"), MENU_INSERT_LRE);
+ menu_ctl->add_item(RTR("Start of Right-to-Left Embedding (RLE)"), MENU_INSERT_RLE);
+ menu_ctl->add_item(RTR("Start of Left-to-Right Override (LRO)"), MENU_INSERT_LRO);
+ menu_ctl->add_item(RTR("Start of Right-to-Left Override (RLO)"), MENU_INSERT_RLO);
+ menu_ctl->add_item(RTR("Pop Direction Formatting (PDF)"), MENU_INSERT_PDF);
menu_ctl->add_separator();
- menu_ctl->add_item(RTR("Arabic letter mark (ALM)"), MENU_INSERT_ALM);
- menu_ctl->add_item(RTR("Left-to-right isolate (LRI)"), MENU_INSERT_LRI);
- menu_ctl->add_item(RTR("Right-to-left isolate (RLI)"), MENU_INSERT_RLI);
- menu_ctl->add_item(RTR("First strong isolate (FSI)"), MENU_INSERT_FSI);
- menu_ctl->add_item(RTR("Pop direction isolate (PDI)"), MENU_INSERT_PDI);
+ menu_ctl->add_item(RTR("Arabic Letter Mark (ALM)"), MENU_INSERT_ALM);
+ menu_ctl->add_item(RTR("Left-to-Right Isolate (LRI)"), MENU_INSERT_LRI);
+ menu_ctl->add_item(RTR("Right-to-Left Isolate (RLI)"), MENU_INSERT_RLI);
+ menu_ctl->add_item(RTR("First Strong Isolate (FSI)"), MENU_INSERT_FSI);
+ menu_ctl->add_item(RTR("Pop Direction Isolate (PDI)"), MENU_INSERT_PDI);
menu_ctl->add_separator();
- menu_ctl->add_item(RTR("Zero width joiner (ZWJ)"), MENU_INSERT_ZWJ);
- menu_ctl->add_item(RTR("Zero width non-joiner (ZWNJ)"), MENU_INSERT_ZWNJ);
- menu_ctl->add_item(RTR("Word joiner (WJ)"), MENU_INSERT_WJ);
- menu_ctl->add_item(RTR("Soft hyphen (SHY)"), MENU_INSERT_SHY);
+ menu_ctl->add_item(RTR("Zero-Width Joiner (ZWJ)"), MENU_INSERT_ZWJ);
+ menu_ctl->add_item(RTR("Zero-Width Non-Joiner (ZWNJ)"), MENU_INSERT_ZWNJ);
+ menu_ctl->add_item(RTR("Word Joiner (WJ)"), MENU_INSERT_WJ);
+ menu_ctl->add_item(RTR("Soft Hyphen (SHY)"), MENU_INSERT_SHY);
menu->add_child(menu_ctl, false, INTERNAL_MODE_FRONT);
menu->connect("id_pressed", callable_mp(this, &TextEdit::menu_option));
@@ -5248,12 +5248,12 @@ void TextEdit::_generate_context_menu() {
menu->add_item(RTR("Redo"), MENU_REDO, is_shortcut_keys_enabled() ? _get_menu_action_accelerator("ui_redo") : 0);
}
menu->add_separator();
- menu->add_submenu_item(RTR("Text writing direction"), "DirMenu");
+ menu->add_submenu_item(RTR("Text Writing Direction"), "DirMenu");
menu->add_separator();
- menu->add_check_item(RTR("Display control characters"), MENU_DISPLAY_UCC);
+ menu->add_check_item(RTR("Display Control Characters"), MENU_DISPLAY_UCC);
menu->set_item_checked(menu->get_item_index(MENU_DISPLAY_UCC), draw_control_chars);
if (editable) {
- menu->add_submenu_item(RTR("Insert control character"), "CTLMenu");
+ menu->add_submenu_item(RTR("Insert Control Character"), "CTLMenu");
}
menu_dir->set_item_checked(menu_dir->get_item_index(MENU_DIR_INHERITED), text_direction == TEXT_DIRECTION_INHERITED);
menu_dir->set_item_checked(menu_dir->get_item_index(MENU_DIR_AUTO), text_direction == TEXT_DIRECTION_AUTO);
diff --git a/scene/gui/tree.cpp b/scene/gui/tree.cpp
index 3f041bf65a..992d364464 100644
--- a/scene/gui/tree.cpp
+++ b/scene/gui/tree.cpp
@@ -3570,7 +3570,9 @@ int Tree::_get_title_button_height() const {
void Tree::_notification(int p_what) {
if (p_what == NOTIFICATION_FOCUS_ENTER) {
- focus_in_id = get_viewport()->get_processed_events_count();
+ if (get_viewport()) {
+ focus_in_id = get_viewport()->get_processed_events_count();
+ }
}
if (p_what == NOTIFICATION_MOUSE_EXIT) {
if (cache.hover_type != Cache::CLICK_NONE) {
diff --git a/scene/main/canvas_layer.cpp b/scene/main/canvas_layer.cpp
index 4540e42b4c..26bff4494b 100644
--- a/scene/main/canvas_layer.cpp
+++ b/scene/main/canvas_layer.cpp
@@ -128,7 +128,7 @@ void CanvasLayer::_notification(int p_what) {
} else {
vp = Node::get_viewport();
}
- ERR_FAIL_COND(!vp);
+ ERR_FAIL_NULL_MSG(vp, "Viewport is not initialized.");
vp->_canvas_layer_add(this);
viewport = vp->get_viewport_rid();
@@ -140,6 +140,8 @@ void CanvasLayer::_notification(int p_what) {
} break;
case NOTIFICATION_EXIT_TREE: {
+ ERR_FAIL_NULL_MSG(vp, "Viewport is not initialized.");
+
vp->_canvas_layer_remove(this);
RenderingServer::get_singleton()->viewport_remove_canvas(viewport, canvas);
viewport = RID();
@@ -160,6 +162,8 @@ Size2 CanvasLayer::get_viewport_size() const {
return Size2(1, 1);
}
+ ERR_FAIL_NULL_V_MSG(vp, Size2(1, 1), "Viewport is not initialized.");
+
Rect2 r = vp->get_visible_rect();
return r.size;
}
@@ -169,7 +173,7 @@ RID CanvasLayer::get_viewport() const {
}
void CanvasLayer::set_custom_viewport(Node *p_viewport) {
- ERR_FAIL_NULL(p_viewport);
+ ERR_FAIL_NULL_MSG(p_viewport, "Cannot set viewport to nullptr.");
if (is_inside_tree()) {
vp->_canvas_layer_remove(this);
RenderingServer::get_singleton()->viewport_remove_canvas(viewport, canvas);
diff --git a/scene/main/scene_tree.h b/scene/main/scene_tree.h
index 19331c1906..7a4f9f9c52 100644
--- a/scene/main/scene_tree.h
+++ b/scene/main/scene_tree.h
@@ -136,7 +136,6 @@ private:
void _flush_ugc();
_FORCE_INLINE_ void _update_group_order(Group &g, bool p_use_priority = false);
- void _update_listener();
Array _get_nodes_in_group(const StringName &p_group);
@@ -265,9 +264,6 @@ public:
void set_pause(bool p_enabled);
bool is_paused() const;
- void set_camera(const RID &p_camera);
- RID get_camera() const;
-
#ifdef DEBUG_ENABLED
void set_debug_collisions_hint(bool p_enabled);
bool is_debugging_collisions_hint() const;
diff --git a/scene/main/viewport.cpp b/scene/main/viewport.cpp
index 0e62e6e30a..3280190250 100644
--- a/scene/main/viewport.cpp
+++ b/scene/main/viewport.cpp
@@ -2192,7 +2192,10 @@ void Viewport::_drop_physics_mouseover(bool p_paused_only) {
if (physics_object_over.is_valid()) {
CollisionObject3D *co = Object::cast_to<CollisionObject3D>(ObjectDB::get_instance(physics_object_over));
if (co) {
- if (!(p_paused_only && co->can_process())) {
+ if (!co->is_inside_tree()) {
+ physics_object_over = ObjectID();
+ physics_object_capture = ObjectID();
+ } else if (!(p_paused_only && co->can_process())) {
co->_mouse_exit();
physics_object_over = ObjectID();
physics_object_capture = ObjectID();
@@ -2213,7 +2216,7 @@ void Viewport::_cleanup_mouseover_colliders(bool p_clean_all_frames, bool p_paus
Object *o = ObjectDB::get_instance(E->key());
if (o) {
CollisionObject2D *co = Object::cast_to<CollisionObject2D>(o);
- if (co) {
+ if (co && co->is_inside_tree()) {
if (p_clean_all_frames && p_paused_only && co->can_process()) {
continue;
}
@@ -2239,7 +2242,7 @@ void Viewport::_cleanup_mouseover_colliders(bool p_clean_all_frames, bool p_paus
Object *o = ObjectDB::get_instance(E->key().first);
if (o) {
CollisionObject2D *co = Object::cast_to<CollisionObject2D>(o);
- if (co) {
+ if (co && co->is_inside_tree()) {
if (p_clean_all_frames && p_paused_only && co->can_process()) {
continue;
}
diff --git a/scene/resources/mesh.h b/scene/resources/mesh.h
index 8d5571d67c..a95b4d4a5e 100644
--- a/scene/resources/mesh.h
+++ b/scene/resources/mesh.h
@@ -278,7 +278,6 @@ public:
int surface_get_array_index_len(int p_idx) const override;
uint32_t surface_get_format(int p_idx) const override;
PrimitiveType surface_get_primitive_type(int p_idx) const override;
- bool surface_is_alpha_sorting_enabled(int p_idx) const;
virtual void surface_set_material(int p_idx, const Ref<Material> &p_material) override;
virtual Ref<Material> surface_get_material(int p_idx) const override;
diff --git a/scene/resources/shape_2d.h b/scene/resources/shape_2d.h
index 14bdd60e4b..7c5d1344e8 100644
--- a/scene/resources/shape_2d.h
+++ b/scene/resources/shape_2d.h
@@ -64,7 +64,6 @@ public:
static bool is_collision_outline_enabled();
- Shape2D();
~Shape2D();
};
diff --git a/servers/audio/effects/audio_effect_limiter.h b/servers/audio/effects/audio_effect_limiter.h
index d5def670a4..398613aa44 100644
--- a/servers/audio/effects/audio_effect_limiter.h
+++ b/servers/audio/effects/audio_effect_limiter.h
@@ -72,8 +72,6 @@ public:
float get_soft_clip_ratio() const;
Ref<AudioEffectInstance> instantiate() override;
- void set_volume_db(float p_volume);
- float get_volume_db() const;
AudioEffectLimiter();
};
diff --git a/servers/audio/effects/audio_effect_record.h b/servers/audio/effects/audio_effect_record.h
index 1a89821f80..6e862b1377 100644
--- a/servers/audio/effects/audio_effect_record.h
+++ b/servers/audio/effects/audio_effect_record.h
@@ -93,7 +93,6 @@ class AudioEffectRecord : public AudioEffect {
protected:
static void _bind_methods();
- static void debug(uint64_t time_diff, int p_frame_count);
public:
Ref<AudioEffectInstance> instantiate() override;
diff --git a/servers/audio/effects/audio_effect_reverb.h b/servers/audio/effects/audio_effect_reverb.h
index d01d1120bd..eaa66352f6 100644
--- a/servers/audio/effects/audio_effect_reverb.h
+++ b/servers/audio/effects/audio_effect_reverb.h
@@ -90,8 +90,6 @@ public:
float get_hpf() const;
Ref<AudioEffectInstance> instantiate() override;
- void set_volume_db(float p_volume);
- float get_volume_db() const;
AudioEffectReverb();
};
diff --git a/servers/physics_2d/godot_body_2d.cpp b/servers/physics_2d/godot_body_2d.cpp
index b0885a1f7b..56f191c203 100644
--- a/servers/physics_2d/godot_body_2d.cpp
+++ b/servers/physics_2d/godot_body_2d.cpp
@@ -55,7 +55,7 @@ void GodotBody2D::update_mass_properties() {
if (calculate_center_of_mass) {
// We have to recompute the center of mass.
- center_of_mass = Vector2();
+ center_of_mass_local = Vector2();
if (total_area != 0.0) {
for (int i = 0; i < get_shape_count(); i++) {
@@ -68,10 +68,10 @@ void GodotBody2D::update_mass_properties() {
real_t mass = area * this->mass / total_area;
// NOTE: we assume that the shape origin is also its center of mass.
- center_of_mass += mass * get_shape_transform(i).get_origin();
+ center_of_mass_local += mass * get_shape_transform(i).get_origin();
}
- center_of_mass /= mass;
+ center_of_mass_local /= mass;
}
}
@@ -94,7 +94,7 @@ void GodotBody2D::update_mass_properties() {
Transform2D mtx = get_shape_transform(i);
Vector2 scale = mtx.get_scale();
- Vector2 shape_origin = mtx.get_origin() - center_of_mass;
+ Vector2 shape_origin = mtx.get_origin() - center_of_mass_local;
inertia += shape->get_moment_of_inertia(mass, scale) + mass * shape_origin.length_squared();
}
}
@@ -119,6 +119,8 @@ void GodotBody2D::update_mass_properties() {
} break;
}
+
+ _update_transform_dependent();
}
void GodotBody2D::reset_mass_properties() {
@@ -179,7 +181,8 @@ void GodotBody2D::set_param(PhysicsServer2D::BodyParameter p_param, const Varian
} break;
case PhysicsServer2D::BODY_PARAM_CENTER_OF_MASS: {
calculate_center_of_mass = false;
- center_of_mass = p_value;
+ center_of_mass_local = p_value;
+ _update_transform_dependent();
} break;
case PhysicsServer2D::BODY_PARAM_GRAVITY_SCALE: {
gravity_scale = p_value;
@@ -273,6 +276,7 @@ PhysicsServer2D::BodyMode GodotBody2D::get_mode() const {
void GodotBody2D::_shapes_changed() {
_mass_properties_changed();
+ wakeup();
wakeup_neighbours();
}
@@ -301,6 +305,7 @@ void GodotBody2D::set_state(PhysicsServer2D::BodyState p_state, const Variant &p
}
_set_transform(t);
_set_inv_transform(get_transform().inverse());
+ _update_transform_dependent();
}
wakeup();
@@ -400,6 +405,10 @@ void GodotBody2D::_compute_area_gravity_and_damping(const GodotArea2D *p_area) {
area_angular_damp += p_area->get_angular_damp();
}
+void GodotBody2D::_update_transform_dependent() {
+ center_of_mass = get_transform().basis_xform(center_of_mass_local);
+}
+
void GodotBody2D::integrate_forces(real_t p_step) {
if (mode == PhysicsServer2D::BODY_MODE_STATIC) {
return;
@@ -549,17 +558,13 @@ void GodotBody2D::integrate_velocities(real_t p_step) {
real_t total_angular_velocity = angular_velocity + biased_angular_velocity;
Vector2 total_linear_velocity = linear_velocity + biased_linear_velocity;
- real_t angle = get_transform().get_rotation() + total_angular_velocity * p_step;
+ real_t angle_delta = total_angular_velocity * p_step;
+ real_t angle = get_transform().get_rotation() + angle_delta;
Vector2 pos = get_transform().get_origin() + total_linear_velocity * p_step;
- real_t center_of_mass_distance = center_of_mass.length();
- if (center_of_mass_distance > CMP_EPSILON) {
+ if (center_of_mass.length_squared() > CMP_EPSILON2) {
// Calculate displacement due to center of mass offset.
- real_t prev_angle = get_transform().get_rotation();
- real_t angle_base = Math::atan2(center_of_mass.y, center_of_mass.x);
- Vector2 point1(Math::cos(angle_base + prev_angle), Math::sin(angle_base + prev_angle));
- Vector2 point2(Math::cos(angle_base + angle), Math::sin(angle_base + angle));
- pos += center_of_mass_distance * (point1 - point2);
+ pos += center_of_mass - center_of_mass.rotated(angle_delta);
}
_set_transform(Transform2D(angle, pos), continuous_cd_mode == PhysicsServer2D::CCD_MODE_DISABLED);
@@ -568,6 +573,8 @@ void GodotBody2D::integrate_velocities(real_t p_step) {
if (continuous_cd_mode != PhysicsServer2D::CCD_MODE_DISABLED) {
new_transform = get_transform();
}
+
+ _update_transform_dependent();
}
void GodotBody2D::wakeup_neighbours() {
diff --git a/servers/physics_2d/godot_body_2d.h b/servers/physics_2d/godot_body_2d.h
index c4f3578f1b..5fce362fa7 100644
--- a/servers/physics_2d/godot_body_2d.h
+++ b/servers/physics_2d/godot_body_2d.h
@@ -66,6 +66,7 @@ class GodotBody2D : public GodotCollisionObject2D {
real_t inertia = 0.0;
real_t _inv_inertia = 0.0;
+ Vector2 center_of_mass_local;
Vector2 center_of_mass;
bool calculate_inertia = true;
@@ -139,7 +140,9 @@ class GodotBody2D : public GodotCollisionObject2D {
uint64_t island_step = 0;
- _FORCE_INLINE_ void _compute_area_gravity_and_damping(const GodotArea2D *p_area);
+ void _compute_area_gravity_and_damping(const GodotArea2D *p_area);
+
+ void _update_transform_dependent();
friend class GodotPhysicsDirectBodyState2D; // i give up, too many functions to expose
diff --git a/servers/physics_3d/godot_body_3d.cpp b/servers/physics_3d/godot_body_3d.cpp
index 6df6a0c45b..02929eeaed 100644
--- a/servers/physics_3d/godot_body_3d.cpp
+++ b/servers/physics_3d/godot_body_3d.cpp
@@ -40,7 +40,7 @@ void GodotBody3D::_mass_properties_changed() {
}
}
-void GodotBody3D::_update_transform_dependant() {
+void GodotBody3D::_update_transform_dependent() {
center_of_mass = get_transform().basis.xform(center_of_mass_local);
principal_inertia_axes = get_transform().basis * principal_inertia_axes_local;
@@ -161,7 +161,7 @@ void GodotBody3D::update_mass_properties() {
} break;
}
- _update_transform_dependant();
+ _update_transform_dependent();
}
void GodotBody3D::reset_mass_properties() {
@@ -217,14 +217,14 @@ void GodotBody3D::set_param(PhysicsServer3D::BodyParameter p_param, const Varian
if (mode == PhysicsServer3D::BODY_MODE_DYNAMIC) {
principal_inertia_axes_local = Basis();
_inv_inertia = inertia.inverse();
- _update_transform_dependant();
+ _update_transform_dependent();
}
}
} break;
case PhysicsServer3D::BODY_PARAM_CENTER_OF_MASS: {
calculate_center_of_mass = false;
center_of_mass_local = p_value;
- _update_transform_dependant();
+ _update_transform_dependent();
} break;
case PhysicsServer3D::BODY_PARAM_GRAVITY_SCALE: {
gravity_scale = p_value;
@@ -295,7 +295,7 @@ void GodotBody3D::set_mode(PhysicsServer3D::BodyMode p_mode) {
if (mode == PhysicsServer3D::BODY_MODE_KINEMATIC && prev != mode) {
first_time_kinematic = true;
}
- _update_transform_dependant();
+ _update_transform_dependent();
} break;
case PhysicsServer3D::BODY_MODE_DYNAMIC: {
@@ -303,7 +303,7 @@ void GodotBody3D::set_mode(PhysicsServer3D::BodyMode p_mode) {
if (!calculate_inertia) {
principal_inertia_axes_local = Basis();
_inv_inertia = inertia.inverse();
- _update_transform_dependant();
+ _update_transform_dependent();
}
_mass_properties_changed();
_set_static(false);
@@ -314,7 +314,7 @@ void GodotBody3D::set_mode(PhysicsServer3D::BodyMode p_mode) {
_inv_mass = mass > 0 ? (1.0 / mass) : 0;
_inv_inertia = Vector3();
angular_velocity = Vector3();
- _update_transform_dependant();
+ _update_transform_dependent();
_set_static(false);
set_active(true);
}
@@ -327,6 +327,8 @@ PhysicsServer3D::BodyMode GodotBody3D::get_mode() const {
void GodotBody3D::_shapes_changed() {
_mass_properties_changed();
+ wakeup();
+ wakeup_neighbours();
}
void GodotBody3D::set_state(PhysicsServer3D::BodyState p_state, const Variant &p_variant) {
@@ -355,6 +357,7 @@ void GodotBody3D::set_state(PhysicsServer3D::BodyState p_state, const Variant &p
}
_set_transform(t);
_set_inv_transform(get_transform().inverse());
+ _update_transform_dependent();
}
wakeup();
@@ -651,7 +654,7 @@ void GodotBody3D::integrate_velocities(real_t p_step) {
_set_transform(transform);
_set_inv_transform(get_transform().inverse());
- _update_transform_dependant();
+ _update_transform_dependent();
}
void GodotBody3D::wakeup_neighbours() {
diff --git a/servers/physics_3d/godot_body_3d.h b/servers/physics_3d/godot_body_3d.h
index 1151a22c96..5acdab9d13 100644
--- a/servers/physics_3d/godot_body_3d.h
+++ b/servers/physics_3d/godot_body_3d.h
@@ -135,9 +135,9 @@ class GodotBody3D : public GodotCollisionObject3D {
uint64_t island_step = 0;
- _FORCE_INLINE_ void _compute_area_gravity_and_damping(const GodotArea3D *p_area);
+ void _compute_area_gravity_and_damping(const GodotArea3D *p_area);
- _FORCE_INLINE_ void _update_transform_dependant();
+ void _update_transform_dependent();
friend class GodotPhysicsDirectBodyState3D; // i give up, too many functions to expose
diff --git a/servers/physics_3d/godot_physics_server_3d.cpp b/servers/physics_3d/godot_physics_server_3d.cpp
index 34b56e733e..79a2e0b0ea 100644
--- a/servers/physics_3d/godot_physics_server_3d.cpp
+++ b/servers/physics_3d/godot_physics_server_3d.cpp
@@ -584,7 +584,6 @@ void GodotPhysicsServer3D::body_set_collision_layer(RID p_body, uint32_t p_layer
ERR_FAIL_COND(!body);
body->set_collision_layer(p_layer);
- body->wakeup();
}
uint32_t GodotPhysicsServer3D::body_get_collision_layer(RID p_body) const {
@@ -599,7 +598,6 @@ void GodotPhysicsServer3D::body_set_collision_mask(RID p_body, uint32_t p_mask)
ERR_FAIL_COND(!body);
body->set_collision_mask(p_mask);
- body->wakeup();
}
uint32_t GodotPhysicsServer3D::body_get_collision_mask(RID p_body) const {
diff --git a/servers/physics_3d/godot_soft_body_3d.cpp b/servers/physics_3d/godot_soft_body_3d.cpp
index d15235d27c..f214e3603a 100644
--- a/servers/physics_3d/godot_soft_body_3d.cpp
+++ b/servers/physics_3d/godot_soft_body_3d.cpp
@@ -139,6 +139,7 @@ void GodotSoftBody3D::set_mesh(RID p_mesh) {
}
Array arrays = RenderingServer::get_singleton()->mesh_surface_get_arrays(soft_mesh, 0);
+ ERR_FAIL_COND(arrays.is_empty());
bool success = create_from_trimesh(arrays[RenderingServer::ARRAY_INDEX], arrays[RenderingServer::ARRAY_VERTEX]);
if (!success) {
diff --git a/servers/physics_server_2d_wrap_mt.h b/servers/physics_server_2d_wrap_mt.h
index 927ef5d57c..4a2f07ab1e 100644
--- a/servers/physics_server_2d_wrap_mt.h
+++ b/servers/physics_server_2d_wrap_mt.h
@@ -59,9 +59,7 @@ class PhysicsServer2DWrapMT : public PhysicsServer2D {
bool create_thread = false;
Semaphore step_sem;
- int step_pending = 0;
void thread_step(real_t p_delta);
- void thread_flush();
void thread_exit();
diff --git a/servers/physics_server_3d_wrap_mt.h b/servers/physics_server_3d_wrap_mt.h
index bf936fd0fc..4c88ef2642 100644
--- a/servers/physics_server_3d_wrap_mt.h
+++ b/servers/physics_server_3d_wrap_mt.h
@@ -58,9 +58,7 @@ class PhysicsServer3DWrapMT : public PhysicsServer3D {
bool create_thread = false;
Semaphore step_sem;
- int step_pending = 0;
void thread_step(real_t p_delta);
- void thread_flush();
void thread_exit();
diff --git a/servers/rendering/renderer_rd/forward_clustered/scene_shader_forward_clustered.cpp b/servers/rendering/renderer_rd/forward_clustered/scene_shader_forward_clustered.cpp
index a1c3481ed6..d05cfdc386 100644
--- a/servers/rendering/renderer_rd/forward_clustered/scene_shader_forward_clustered.cpp
+++ b/servers/rendering/renderer_rd/forward_clustered/scene_shader_forward_clustered.cpp
@@ -657,6 +657,10 @@ void SceneShaderForwardClustered::init(RendererStorageRD *p_storage, const Strin
actions.render_mode_defines["specular_schlick_ggx"] = "#define SPECULAR_BLINN\n";
}
+ actions.custom_samplers["SCREEN_TEXTURE"] = "material_samplers[3]"; // linear filter with mipmaps
+ actions.custom_samplers["DEPTH_TEXTURE"] = "material_samplers[3]";
+ actions.custom_samplers["NORMAL_ROUGHNESS_TEXTURE"] = "material_samplers[1]"; // linear filter
+
actions.render_mode_defines["specular_blinn"] = "#define SPECULAR_BLINN\n";
actions.render_mode_defines["specular_phong"] = "#define SPECULAR_PHONG\n";
actions.render_mode_defines["specular_toon"] = "#define SPECULAR_TOON\n";
diff --git a/servers/rendering/renderer_rd/renderer_scene_render_rd.cpp b/servers/rendering/renderer_rd/renderer_scene_render_rd.cpp
index d128578d0b..a906a853dc 100644
--- a/servers/rendering/renderer_rd/renderer_scene_render_rd.cpp
+++ b/servers/rendering/renderer_rd/renderer_scene_render_rd.cpp
@@ -2696,9 +2696,14 @@ void RendererSceneRenderRD::shadows_quality_set(RS::ShadowQuality p_quality) {
switch (shadows_quality) {
case RS::SHADOW_QUALITY_HARD: {
penumbra_shadow_samples = 4;
- soft_shadow_samples = 1;
+ soft_shadow_samples = 0;
shadows_quality_radius = 1.0;
} break;
+ case RS::SHADOW_QUALITY_SOFT_VERY_LOW: {
+ penumbra_shadow_samples = 4;
+ soft_shadow_samples = 1;
+ shadows_quality_radius = 1.5;
+ } break;
case RS::SHADOW_QUALITY_SOFT_LOW: {
penumbra_shadow_samples = 8;
soft_shadow_samples = 4;
@@ -2738,9 +2743,14 @@ void RendererSceneRenderRD::directional_shadow_quality_set(RS::ShadowQuality p_q
switch (directional_shadow_quality) {
case RS::SHADOW_QUALITY_HARD: {
directional_penumbra_shadow_samples = 4;
- directional_soft_shadow_samples = 1;
+ directional_soft_shadow_samples = 0;
directional_shadow_quality_radius = 1.0;
} break;
+ case RS::SHADOW_QUALITY_SOFT_VERY_LOW: {
+ directional_penumbra_shadow_samples = 4;
+ directional_soft_shadow_samples = 1;
+ directional_shadow_quality_radius = 1.5;
+ } break;
case RS::SHADOW_QUALITY_SOFT_LOW: {
directional_penumbra_shadow_samples = 8;
directional_soft_shadow_samples = 4;
diff --git a/servers/rendering/renderer_rd/renderer_storage_rd.cpp b/servers/rendering/renderer_rd/renderer_storage_rd.cpp
index a7bfea455d..3e68a2b622 100644
--- a/servers/rendering/renderer_rd/renderer_storage_rd.cpp
+++ b/servers/rendering/renderer_rd/renderer_storage_rd.cpp
@@ -2672,9 +2672,11 @@ void RendererStorageRD::MaterialData::update_textures(const Map<StringName, Vari
if (uniform_array_size > 0) {
if (textures.size() < uniform_array_size) {
const Map<StringName, RID>::Element *W = p_default_textures.find(uniform_name);
- if (W) {
- for (int j = textures.size(); j < uniform_array_size; j++) {
+ for (int j = textures.size(); j < uniform_array_size; j++) {
+ if (W) {
textures.push_back(W->get());
+ } else {
+ textures.push_back(RID());
}
}
}
diff --git a/servers/rendering/renderer_rd/shaders/scene_forward_lights_inc.glsl b/servers/rendering/renderer_rd/shaders/scene_forward_lights_inc.glsl
index 4d466342f8..72872c9c08 100644
--- a/servers/rendering/renderer_rd/shaders/scene_forward_lights_inc.glsl
+++ b/servers/rendering/renderer_rd/shaders/scene_forward_lights_inc.glsl
@@ -301,7 +301,7 @@ float sample_directional_pcf_shadow(texture2D shadow, vec2 shadow_pixel_size, ve
float depth = coord.z;
//if only one sample is taken, take it from the center
- if (sc_directional_soft_shadow_samples == 1) {
+ if (sc_directional_soft_shadow_samples == 0) {
return textureProj(sampler2DShadow(shadow, shadow_sampler), vec4(pos, depth, 1.0));
}
@@ -327,7 +327,7 @@ float sample_pcf_shadow(texture2D shadow, vec2 shadow_pixel_size, vec3 coord) {
float depth = coord.z;
//if only one sample is taken, take it from the center
- if (sc_soft_shadow_samples == 1) {
+ if (sc_soft_shadow_samples == 0) {
return textureProj(sampler2DShadow(shadow, shadow_sampler), vec4(pos, depth, 1.0));
}
@@ -350,7 +350,7 @@ float sample_pcf_shadow(texture2D shadow, vec2 shadow_pixel_size, vec3 coord) {
float sample_omni_pcf_shadow(texture2D shadow, float blur_scale, vec2 coord, vec4 uv_rect, vec2 flip_offset, float depth) {
//if only one sample is taken, take it from the center
- if (sc_soft_shadow_samples == 1) {
+ if (sc_soft_shadow_samples == 0) {
vec2 pos = coord * 0.5 + 0.5;
pos = uv_rect.xy + pos * uv_rect.zw;
return textureProj(sampler2DShadow(shadow, shadow_sampler), vec4(pos, depth, 1.0));
diff --git a/servers/rendering/shader_language.cpp b/servers/rendering/shader_language.cpp
index 9c38bf7606..53f2d96f52 100644
--- a/servers/rendering/shader_language.cpp
+++ b/servers/rendering/shader_language.cpp
@@ -2763,6 +2763,7 @@ bool ShaderLanguage::_validate_function_call(BlockNode *p_block, const FunctionI
bool is_const = false;
ConstantNode::Value value;
+ value.sint = -1;
_find_identifier(p_block, false, p_function_info, vn->name, nullptr, nullptr, &is_const, nullptr, nullptr, &value);
if (!is_const || value.sint < min || value.sint > max) {
diff --git a/servers/rendering_server.cpp b/servers/rendering_server.cpp
index 348d46545b..039dbc71e3 100644
--- a/servers/rendering_server.cpp
+++ b/servers/rendering_server.cpp
@@ -1942,6 +1942,7 @@ void RenderingServer::_bind_methods() {
ClassDB::bind_method(D_METHOD("directional_shadow_atlas_set_size", "size", "is_16bits"), &RenderingServer::directional_shadow_atlas_set_size);
BIND_ENUM_CONSTANT(SHADOW_QUALITY_HARD);
+ BIND_ENUM_CONSTANT(SHADOW_QUALITY_SOFT_VERY_LOW);
BIND_ENUM_CONSTANT(SHADOW_QUALITY_SOFT_LOW);
BIND_ENUM_CONSTANT(SHADOW_QUALITY_SOFT_MEDIUM);
BIND_ENUM_CONSTANT(SHADOW_QUALITY_SOFT_HIGH);
@@ -2793,14 +2794,14 @@ RenderingServer::RenderingServer() {
GLOBAL_DEF("rendering/shadows/directional_shadow/size", 4096);
GLOBAL_DEF("rendering/shadows/directional_shadow/size.mobile", 2048);
ProjectSettings::get_singleton()->set_custom_property_info("rendering/shadows/directional_shadow/size", PropertyInfo(Variant::INT, "rendering/shadows/directional_shadow/size", PROPERTY_HINT_RANGE, "256,16384"));
- GLOBAL_DEF("rendering/shadows/directional_shadow/soft_shadow_quality", 2);
+ GLOBAL_DEF("rendering/shadows/directional_shadow/soft_shadow_quality", 3);
GLOBAL_DEF("rendering/shadows/directional_shadow/soft_shadow_quality.mobile", 0);
- ProjectSettings::get_singleton()->set_custom_property_info("rendering/shadows/directional_shadow/soft_shadow_quality", PropertyInfo(Variant::INT, "rendering/shadows/directional_shadow/soft_shadow_quality", PROPERTY_HINT_ENUM, "Hard (Fastest),Soft Low (Fast),Soft Medium (Average),Soft High (Slow),Soft Ultra (Slowest)"));
+ ProjectSettings::get_singleton()->set_custom_property_info("rendering/shadows/directional_shadow/soft_shadow_quality", PropertyInfo(Variant::INT, "rendering/shadows/directional_shadow/soft_shadow_quality", PROPERTY_HINT_ENUM, "Hard (Fastest),Soft Very Low (Faster),Soft Low (Fast),Soft Medium (Average),Soft High (Slow),Soft Ultra (Slowest)"));
GLOBAL_DEF("rendering/shadows/directional_shadow/16_bits", true);
- GLOBAL_DEF("rendering/shadows/shadows/soft_shadow_quality", 2);
+ GLOBAL_DEF("rendering/shadows/shadows/soft_shadow_quality", 3);
GLOBAL_DEF("rendering/shadows/shadows/soft_shadow_quality.mobile", 0);
- ProjectSettings::get_singleton()->set_custom_property_info("rendering/shadows/shadows/soft_shadow_quality", PropertyInfo(Variant::INT, "rendering/shadows/shadows/soft_shadow_quality", PROPERTY_HINT_ENUM, "Hard (Fastest),Soft Low (Fast),Soft Medium (Average),Soft High (Slow),Soft Ultra (Slowest)"));
+ ProjectSettings::get_singleton()->set_custom_property_info("rendering/shadows/shadows/soft_shadow_quality", PropertyInfo(Variant::INT, "rendering/shadows/shadows/soft_shadow_quality", PROPERTY_HINT_ENUM, "Hard (Fastest),Soft Very Low (Faster),Soft Low (Fast),Soft Medium (Average),Soft High (Slow),Soft Ultra (Slowest)"));
GLOBAL_DEF("rendering/2d/shadow_atlas/size", 2048);
diff --git a/servers/rendering_server.h b/servers/rendering_server.h
index b50da66d03..b6068afcf1 100644
--- a/servers/rendering_server.h
+++ b/servers/rendering_server.h
@@ -474,6 +474,7 @@ public:
enum ShadowQuality {
SHADOW_QUALITY_HARD,
+ SHADOW_QUALITY_SOFT_VERY_LOW,
SHADOW_QUALITY_SOFT_LOW,
SHADOW_QUALITY_SOFT_MEDIUM,
SHADOW_QUALITY_SOFT_HIGH,