diff options
74 files changed, 1132 insertions, 936 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/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/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 b1e685651e..397743fb6e 100644 --- a/core/string/ustring.cpp +++ b/core/string/ustring.cpp @@ -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/Animation.xml b/doc/classes/Animation.xml index ebcced7dc4..52308d1438 100644 --- a/doc/classes/Animation.xml +++ b/doc/classes/Animation.xml @@ -226,6 +226,7 @@ <method name="find_track" qualifiers="const"> <return type="int" /> <argument index="0" name="path" type="NodePath" /> + <argument index="1" name="type" type="int" enum="Animation.TrackType" /> <description> Returns the index of the specified track. If the track is not found, return -1. </description> 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/DisplayServer.xml b/doc/classes/DisplayServer.xml index 4b43286594..92d6a220d2 100644 --- a/doc/classes/DisplayServer.xml +++ b/doc/classes/DisplayServer.xml @@ -819,6 +819,8 @@ </constant> <constant name="FEATURE_SWAP_BUFFERS" value="17" enum="Feature"> </constant> + <constant name="FEATURE_CLIPBOARD_PRIMARY" value="19" enum="Feature"> + </constant> <constant name="MOUSE_MODE_VISIBLE" value="0" enum="MouseMode"> Makes the mouse cursor visible if it is hidden. </constant> diff --git a/doc/classes/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/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="".godot""> - 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=""""> 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=""""> 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/editor/animation_track_editor.cpp b/editor/animation_track_editor.cpp index 7f118532c9..e773510797 100644 --- a/editor/animation_track_editor.cpp +++ b/editor/animation_track_editor.cpp @@ -584,7 +584,8 @@ public: } break; case Animation::TYPE_METHOD: { p_list->push_back(PropertyInfo(Variant::STRING_NAME, "name")); - p_list->push_back(PropertyInfo(Variant::INT, "arg_count", PROPERTY_HINT_RANGE, "0,5,1")); + static_assert(VARIANT_ARG_MAX == 8, "PROPERTY_HINT_RANGE needs to be updated if VARIANT_ARG_MAX != 8"); + p_list->push_back(PropertyInfo(Variant::INT, "arg_count", PROPERTY_HINT_RANGE, "0,8,1")); Dictionary d = animation->track_get_key_value(track, key); ERR_FAIL_COND(!d.has("args")); @@ -1247,7 +1248,8 @@ public: } break; case Animation::TYPE_METHOD: { p_list->push_back(PropertyInfo(Variant::STRING_NAME, "name")); - p_list->push_back(PropertyInfo(Variant::INT, "arg_count", PROPERTY_HINT_RANGE, "0,5,1")); + static_assert(VARIANT_ARG_MAX == 8, "PROPERTY_HINT_RANGE needs to be updated if VARIANT_ARG_MAX != 8"); + p_list->push_back(PropertyInfo(Variant::INT, "arg_count", PROPERTY_HINT_RANGE, "0,8,1")); Dictionary d = animation->track_get_key_value(first_track, first_key); ERR_FAIL_COND(!d.has("args")); @@ -3487,7 +3489,7 @@ void AnimationTrackEditor::_query_insert(const InsertData &p_id) { for (const InsertData &E : insert_data) { // Prevent insertion of multiple tracks. - if (E.path == p_id.path) { + if (E.path == p_id.path && E.type == p_id.type) { return; // Already inserted a track this frame. } } @@ -3537,7 +3539,11 @@ void AnimationTrackEditor::_insert_track(bool p_create_reset, bool p_create_bezi } } -void AnimationTrackEditor::insert_transform_key(Node3D *p_node, const String &p_sub, const Transform3D &p_xform) { +void AnimationTrackEditor::insert_transform_key(Node3D *p_node, const String &p_sub, const Animation::TrackType p_type, const Variant p_value) { + ERR_FAIL_COND(!root); + ERR_FAIL_COND_MSG( + (p_type != Animation::TYPE_POSITION_3D && p_type != Animation::TYPE_ROTATION_3D && p_type != Animation::TYPE_SCALE_3D), + "Track type must be Position/Rotation/Scale 3D."); if (!keying) { return; } @@ -3545,7 +3551,6 @@ void AnimationTrackEditor::insert_transform_key(Node3D *p_node, const String &p_ return; } - ERR_FAIL_COND(!root); // Let's build a node path. String path = root->get_path_to(p_node); if (p_sub != "") { @@ -3554,24 +3559,16 @@ void AnimationTrackEditor::insert_transform_key(Node3D *p_node, const String &p_ NodePath np = path; - int position_idx = -1; - int rotation_idx = -1; - int scale_idx = -1; + int track_idx = -1; for (int i = 0; i < animation->get_track_count(); i++) { if (animation->track_get_path(i) != np) { continue; } - - if (animation->track_get_type(i) == Animation::TYPE_POSITION_3D) { - position_idx = i; - } - if (animation->track_get_type(i) == Animation::TYPE_ROTATION_3D) { - rotation_idx = i; - } - if (animation->track_get_type(i) == Animation::TYPE_SCALE_3D) { - scale_idx = i; + if (animation->track_get_type(i) != p_type) { + continue; } + track_idx = i; } InsertData id; @@ -3579,48 +3576,30 @@ void AnimationTrackEditor::insert_transform_key(Node3D *p_node, const String &p_ // TRANSLATORS: This describes the target of new animation track, will be inserted into another string. id.query = vformat(TTR("node '%s'"), p_node->get_name()); id.advance = false; - - { - id.track_idx = position_idx; - id.value = p_xform.origin; - id.type = Animation::TYPE_POSITION_3D; - _query_insert(id); - } - { - id.track_idx = rotation_idx; - id.value = p_xform.basis.get_rotation_quaternion(); - id.type = Animation::TYPE_ROTATION_3D; - _query_insert(id); - } - { - id.track_idx = scale_idx; - id.value = p_xform.basis.get_scale(); - id.type = Animation::TYPE_SCALE_3D; - _query_insert(id); - } + id.track_idx = track_idx; + id.value = p_value; + id.type = p_type; + _query_insert(id); } -bool AnimationTrackEditor::has_transform_track(Node3D *p_node, const String &p_sub) { +bool AnimationTrackEditor::has_track(Node3D *p_node, const String &p_sub, const Animation::TrackType p_type) { + ERR_FAIL_COND_V(!root, false); if (!keying) { return false; } if (!animation.is_valid()) { return false; } - if (!root) { - return false; - } - //let's build a node path + // Let's build a node path. String path = root->get_path_to(p_node); if (p_sub != "") { path += ":" + p_sub; } - int track_id = animation->find_track(path); + + int track_id = animation->find_track(path, p_type); if (track_id >= 0) { - if (animation->track_get_type(track_id) == Animation::TYPE_POSITION_3D || animation->track_get_type(track_id) == Animation::TYPE_ROTATION_3D || animation->track_get_type(track_id) == Animation::TYPE_SCALE_3D) { - return true; - } + return true; } return false; } diff --git a/editor/animation_track_editor.h b/editor/animation_track_editor.h index 2555901557..05cf91de1d 100644 --- a/editor/animation_track_editor.h +++ b/editor/animation_track_editor.h @@ -527,8 +527,8 @@ public: void set_anim_pos(float p_pos); void insert_node_value_key(Node *p_node, const String &p_property, const Variant &p_value, bool p_only_if_exists = false); void insert_value_key(const String &p_property, const Variant &p_value, bool p_advance); - void insert_transform_key(Node3D *p_node, const String &p_sub, const Transform3D &p_xform); - bool has_transform_track(Node3D *p_node, const String &p_sub); + void insert_transform_key(Node3D *p_node, const String &p_sub, const Animation::TrackType p_type, const Variant p_value); + bool has_track(Node3D *p_node, const String &p_sub, const Animation::TrackType p_type); void make_insert_queue(); void commit_insert_queue(); diff --git a/editor/animation_track_editor_plugins.cpp b/editor/animation_track_editor_plugins.cpp index 4ee8b991e4..70ba806c37 100644 --- a/editor/animation_track_editor_plugins.cpp +++ b/editor/animation_track_editor_plugins.cpp @@ -419,7 +419,7 @@ Rect2 AnimationTrackEditSpriteFrame::get_key_rect(int p_index, float p_pixels_se // Go through other track to find if animation is set String animation_path = get_animation()->track_get_path(get_track()); animation_path = animation_path.replace(":frame", ":animation"); - int animation_track = get_animation()->find_track(animation_path); + int animation_track = get_animation()->find_track(animation_path, get_animation()->track_get_type(get_track())); float track_time = get_animation()->track_get_key_time(get_track(), p_index); int animaiton_index = get_animation()->track_find_key(animation_track, track_time); animation = get_animation()->track_get_key_value(animation_track, animaiton_index); @@ -511,7 +511,7 @@ void AnimationTrackEditSpriteFrame::draw_key(int p_index, float p_pixels_sec, in // Go through other track to find if animation is set String animation_path = get_animation()->track_get_path(get_track()); animation_path = animation_path.replace(":frame", ":animation"); - int animation_track = get_animation()->find_track(animation_path); + int animation_track = get_animation()->find_track(animation_path, get_animation()->track_get_type(get_track())); float track_time = get_animation()->track_get_key_time(get_track(), p_index); int animaiton_index = get_animation()->track_find_key(animation_track, track_time); animation = get_animation()->track_get_key_value(animation_track, animaiton_index); diff --git a/editor/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/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/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/icons/NewKey.svg b/editor/icons/NewKey.svg new file mode 100644 index 0000000000..fc8507e6c4 --- /dev/null +++ b/editor/icons/NewKey.svg @@ -0,0 +1 @@ +<svg enable-background="new 0 0 16 16" height="16" viewBox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"><g fill="#e0e0e0" fill-opacity=".9961"><path d="m13 9h-2v2h-2v2h2v2h2v-2h2v-2h-2z"/><path d="m10 9.723c-.596-.347-1-.985-1-1.723 0-1.104.896-2 2-2s2 .896 2 2h1v2h.445c.344-.591.555-1.268.555-2 0-2.209-1.791-4-4-4-1.822.002-3.414 1.235-3.869 3h-6.131v2h1v2h3v-2h2.133c.16.62.466 1.169.867 1.627v-.627h2z"/></g></svg> diff --git a/editor/inspector_dock.cpp b/editor/inspector_dock.cpp index 59d0b92ba0..5622d0b145 100644 --- a/editor/inspector_dock.cpp +++ b/editor/inspector_dock.cpp @@ -391,7 +391,9 @@ void InspectorDock::_transform_keyed(Object *sp, const String &p_sub, const Tran if (!s) { return; } - AnimationPlayerEditor::get_singleton()->get_track_editor()->insert_transform_key(s, p_sub, p_key); + AnimationPlayerEditor::get_singleton()->get_track_editor()->insert_transform_key(s, p_sub, Animation::TYPE_POSITION_3D, p_key.origin); + AnimationPlayerEditor::get_singleton()->get_track_editor()->insert_transform_key(s, p_sub, Animation::TYPE_ROTATION_3D, p_key.basis.get_rotation_quaternion()); + AnimationPlayerEditor::get_singleton()->get_track_editor()->insert_transform_key(s, p_sub, Animation::TYPE_SCALE_3D, p_key.basis.get_scale()); } void InspectorDock::_warning_pressed() { diff --git a/editor/plugins/skeleton_3d_editor_plugin.cpp b/editor/plugins/skeleton_3d_editor_plugin.cpp index 708eaf2c46..0b8a56503c 100644 --- a/editor/plugins/skeleton_3d_editor_plugin.cpp +++ b/editor/plugins/skeleton_3d_editor_plugin.cpp @@ -54,6 +54,7 @@ void BoneTransformEditor::create_editors() { enabled_checkbox = memnew(EditorPropertyCheck()); enabled_checkbox->set_label("Pose Enabled"); + enabled_checkbox->set_selectable(false); enabled_checkbox->connect("property_changed", callable_mp(this, &BoneTransformEditor::_value_changed)); section->get_vbox()->add_child(enabled_checkbox); @@ -61,21 +62,27 @@ void BoneTransformEditor::create_editors() { position_property = memnew(EditorPropertyVector3()); position_property->setup(-10000, 10000, 0.001f, true); position_property->set_label("Position"); + position_property->set_selectable(false); position_property->connect("property_changed", callable_mp(this, &BoneTransformEditor::_value_changed)); + position_property->connect("property_keyed", callable_mp(this, &BoneTransformEditor::_property_keyed)); section->get_vbox()->add_child(position_property); // Rotation property. rotation_property = memnew(EditorPropertyQuaternion()); rotation_property->setup(-10000, 10000, 0.001f, true); rotation_property->set_label("Rotation"); + rotation_property->set_selectable(false); rotation_property->connect("property_changed", callable_mp(this, &BoneTransformEditor::_value_changed)); + rotation_property->connect("property_keyed", callable_mp(this, &BoneTransformEditor::_property_keyed)); section->get_vbox()->add_child(rotation_property); // Scale property. scale_property = memnew(EditorPropertyVector3()); scale_property->setup(-10000, 10000, 0.001f, true); scale_property->set_label("Scale"); + scale_property->set_selectable(false); scale_property->connect("property_changed", callable_mp(this, &BoneTransformEditor::_value_changed)); + scale_property->connect("property_keyed", callable_mp(this, &BoneTransformEditor::_property_keyed)); section->get_vbox()->add_child(scale_property); // Transform/Matrix section. @@ -87,6 +94,7 @@ void BoneTransformEditor::create_editors() { rest_matrix = memnew(EditorPropertyTransform3D()); rest_matrix->setup(-10000, 10000, 0.001f, true); rest_matrix->set_label("Transform"); + rest_matrix->set_selectable(false); rest_section->get_vbox()->add_child(rest_matrix); } @@ -116,6 +124,12 @@ BoneTransformEditor::BoneTransformEditor(Skeleton3D *p_skeleton) : undo_redo = EditorNode::get_undo_redo(); } +void BoneTransformEditor::set_keyable(const bool p_keyable) { + position_property->set_keying(p_keyable); + rotation_property->set_keying(p_keyable); + scale_property->set_keying(p_keyable); +} + void BoneTransformEditor::set_target(const String &p_prop) { enabled_checkbox->set_object_and_property(skeleton, p_prop + "enabled"); enabled_checkbox->update_property(); @@ -133,6 +147,23 @@ void BoneTransformEditor::set_target(const String &p_prop) { rest_matrix->update_property(); } +void BoneTransformEditor::_property_keyed(const String &p_path, bool p_advance) { + AnimationTrackEditor *te = AnimationPlayerEditor::get_singleton()->get_track_editor(); + PackedStringArray split = p_path.split("/"); + if (split.size() == 3 && split[0] == "bones") { + int bone_idx = split[1].to_int(); + if (split[2] == "position") { + te->insert_transform_key(skeleton, skeleton->get_bone_name(bone_idx), Animation::TYPE_POSITION_3D, skeleton->get(p_path)); + } + if (split[2] == "rotation") { + te->insert_transform_key(skeleton, skeleton->get_bone_name(bone_idx), Animation::TYPE_ROTATION_3D, skeleton->get(p_path)); + } + if (split[2] == "scale") { + te->insert_transform_key(skeleton, skeleton->get_bone_name(bone_idx), Animation::TYPE_SCALE_3D, skeleton->get(p_path)); + } + } +} + void BoneTransformEditor::_update_properties() { if (!skeleton) { return; @@ -141,30 +172,30 @@ void BoneTransformEditor::_update_properties() { List<PropertyInfo> props; skeleton->get_property_list(&props); for (const PropertyInfo &E : props) { - PackedStringArray spr = E.name.split("/"); - if (spr.size() == 3 && spr[0] == "bones") { - if (spr[1].to_int() == selected) { - if (spr[2] == "enabled") { + PackedStringArray split = E.name.split("/"); + if (split.size() == 3 && split[0] == "bones") { + if (split[1].to_int() == selected) { + if (split[2] == "enabled") { enabled_checkbox->set_read_only(E.usage & PROPERTY_USAGE_READ_ONLY); enabled_checkbox->update_property(); enabled_checkbox->update(); } - if (spr[2] == "position") { + if (split[2] == "position") { position_property->set_read_only(E.usage & PROPERTY_USAGE_READ_ONLY); position_property->update_property(); position_property->update(); } - if (spr[2] == "rotation") { + if (split[2] == "rotation") { rotation_property->set_read_only(E.usage & PROPERTY_USAGE_READ_ONLY); rotation_property->update_property(); rotation_property->update(); } - if (spr[2] == "scale") { + if (split[2] == "scale") { scale_property->set_read_only(E.usage & PROPERTY_USAGE_READ_ONLY); scale_property->update_property(); scale_property->update(); } - if (spr[2] == "rest") { + if (split[2] == "rest") { rest_matrix->set_read_only(E.usage & PROPERTY_USAGE_READ_ONLY); rest_matrix->update_property(); rest_matrix->update(); @@ -178,12 +209,16 @@ Skeleton3DEditor *Skeleton3DEditor::singleton = nullptr; void Skeleton3DEditor::set_keyable(const bool p_keyable) { keyable = p_keyable; - skeleton_options->get_popup()->set_item_disabled(SKELETON_OPTION_INSERT_KEYS, !p_keyable); - skeleton_options->get_popup()->set_item_disabled(SKELETON_OPTION_INSERT_KEYS_EXISTED, !p_keyable); + if (p_keyable) { + animation_hb->show(); + } else { + animation_hb->hide(); + } }; -void Skeleton3DEditor::set_rest_options_enabled(const bool p_rest_options_enabled) { - rest_options->get_popup()->set_item_disabled(REST_OPTION_POSE_TO_REST, !p_rest_options_enabled); +void Skeleton3DEditor::set_bone_options_enabled(const bool p_bone_options_enabled) { + skeleton_options->get_popup()->set_item_disabled(SKELETON_OPTION_INIT_SELECTED_POSES, !p_bone_options_enabled); + skeleton_options->get_popup()->set_item_disabled(SKELETON_OPTION_SELECTED_POSES_TO_RESTS, !p_bone_options_enabled); }; void Skeleton3DEditor::_on_click_skeleton_option(int p_skeleton_option) { @@ -192,62 +227,76 @@ void Skeleton3DEditor::_on_click_skeleton_option(int p_skeleton_option) { } switch (p_skeleton_option) { - case SKELETON_OPTION_CREATE_PHYSICAL_SKELETON: { - create_physical_skeleton(); + case SKELETON_OPTION_INIT_ALL_POSES: { + init_pose(true); break; } - case SKELETON_OPTION_INIT_POSE: { - init_pose(); + case SKELETON_OPTION_INIT_SELECTED_POSES: { + init_pose(false); break; } - case SKELETON_OPTION_INSERT_KEYS: { - insert_keys(true); + case SKELETON_OPTION_ALL_POSES_TO_RESTS: { + pose_to_rest(true); break; } - case SKELETON_OPTION_INSERT_KEYS_EXISTED: { - insert_keys(false); + case SKELETON_OPTION_SELECTED_POSES_TO_RESTS: { + pose_to_rest(false); + break; + } + case SKELETON_OPTION_CREATE_PHYSICAL_SKELETON: { + create_physical_skeleton(); break; } } } -void Skeleton3DEditor::_on_click_rest_option(int p_rest_option) { +void Skeleton3DEditor::init_pose(const bool p_all_bones) { if (!skeleton) { return; } - - switch (p_rest_option) { - case REST_OPTION_POSE_TO_REST: { - pose_to_rest(); - break; - } - } -} - -void Skeleton3DEditor::init_pose() { const int bone_len = skeleton->get_bone_count(); if (!bone_len) { return; } + UndoRedo *ur = EditorNode::get_singleton()->get_undo_redo(); ur->create_action(TTR("Set Bone Transform"), UndoRedo::MERGE_ENDS); - for (int i = 0; i < bone_len; i++) { - Transform3D rest = skeleton->get_bone_rest(i); - ur->add_do_method(skeleton, "set_bone_pose_position", i, rest.origin); - ur->add_do_method(skeleton, "set_bone_pose_rotation", i, rest.basis.get_rotation_quaternion()); - ur->add_do_method(skeleton, "set_bone_pose_scale", i, rest.basis.get_scale()); - ur->add_undo_method(skeleton, "set_bone_pose_position", i, skeleton->get_bone_pose_position(i)); - ur->add_undo_method(skeleton, "set_bone_pose_rotation", i, skeleton->get_bone_pose_rotation(i)); - ur->add_undo_method(skeleton, "set_bone_pose_scale", i, skeleton->get_bone_pose_scale(i)); + if (p_all_bones) { + for (int i = 0; i < bone_len; i++) { + Transform3D rest = skeleton->get_bone_rest(i); + ur->add_do_method(skeleton, "set_bone_pose_position", i, rest.origin); + ur->add_do_method(skeleton, "set_bone_pose_rotation", i, rest.basis.get_rotation_quaternion()); + ur->add_do_method(skeleton, "set_bone_pose_scale", i, rest.basis.get_scale()); + ur->add_undo_method(skeleton, "set_bone_pose_position", i, skeleton->get_bone_pose_position(i)); + ur->add_undo_method(skeleton, "set_bone_pose_rotation", i, skeleton->get_bone_pose_rotation(i)); + ur->add_undo_method(skeleton, "set_bone_pose_scale", i, skeleton->get_bone_pose_scale(i)); + } + } else { + // Todo: Do method with multiple bone selection. + if (selected_bone == -1) { + ur->commit_action(); + return; + } + Transform3D rest = skeleton->get_bone_rest(selected_bone); + ur->add_do_method(skeleton, "set_bone_pose_position", selected_bone, rest.origin); + ur->add_do_method(skeleton, "set_bone_pose_rotation", selected_bone, rest.basis.get_rotation_quaternion()); + ur->add_do_method(skeleton, "set_bone_pose_scale", selected_bone, rest.basis.get_scale()); + ur->add_undo_method(skeleton, "set_bone_pose_position", selected_bone, skeleton->get_bone_pose_position(selected_bone)); + ur->add_undo_method(skeleton, "set_bone_pose_rotation", selected_bone, skeleton->get_bone_pose_rotation(selected_bone)); + ur->add_undo_method(skeleton, "set_bone_pose_scale", selected_bone, skeleton->get_bone_pose_scale(selected_bone)); } ur->commit_action(); } -void Skeleton3DEditor::insert_keys(bool p_all_bones) { +void Skeleton3DEditor::insert_keys(const bool p_all_bones) { if (!skeleton) { return; } + bool pos_enabled = key_loc_button->is_pressed(); + bool rot_enabled = key_rot_button->is_pressed(); + bool scl_enabled = key_scale_button->is_pressed(); + int bone_len = skeleton->get_bone_count(); Node *root = EditorNode::get_singleton()->get_tree()->get_root(); String path = root->get_path_to(skeleton); @@ -261,26 +310,44 @@ void Skeleton3DEditor::insert_keys(bool p_all_bones) { continue; } - if (!p_all_bones && !te->has_transform_track(skeleton, name)) { - continue; + if (pos_enabled && (p_all_bones || te->has_track(skeleton, name, Animation::TYPE_POSITION_3D))) { + te->insert_transform_key(skeleton, name, Animation::TYPE_POSITION_3D, skeleton->get_bone_pose_position(i)); + } + if (rot_enabled && (p_all_bones || te->has_track(skeleton, name, Animation::TYPE_ROTATION_3D))) { + te->insert_transform_key(skeleton, name, Animation::TYPE_ROTATION_3D, skeleton->get_bone_pose_rotation(i)); + } + if (scl_enabled && (p_all_bones || te->has_track(skeleton, name, Animation::TYPE_SCALE_3D))) { + te->insert_transform_key(skeleton, name, Animation::TYPE_SCALE_3D, skeleton->get_bone_pose_scale(i)); } - - Transform3D tform = skeleton->get_bone_pose(i); - te->insert_transform_key(skeleton, name, tform); } te->commit_insert_queue(); } -void Skeleton3DEditor::pose_to_rest() { +void Skeleton3DEditor::pose_to_rest(const bool p_all_bones) { if (!skeleton) { return; } + const int bone_len = skeleton->get_bone_count(); + if (!bone_len) { + return; + } - // Todo: Do method with multiple bone selection. UndoRedo *ur = EditorNode::get_singleton()->get_undo_redo(); ur->create_action(TTR("Set Bone Rest"), UndoRedo::MERGE_ENDS); - ur->add_do_method(skeleton, "set_bone_rest", selected_bone, skeleton->get_bone_pose(selected_bone)); - ur->add_undo_method(skeleton, "set_bone_rest", selected_bone, skeleton->get_bone_rest(selected_bone)); + if (p_all_bones) { + for (int i = 0; i < bone_len; i++) { + ur->add_do_method(skeleton, "set_bone_rest", i, skeleton->get_bone_pose(i)); + ur->add_undo_method(skeleton, "set_bone_rest", i, skeleton->get_bone_rest(i)); + } + } else { + // Todo: Do method with multiple bone selection. + if (selected_bone == -1) { + ur->commit_action(); + return; + } + ur->add_do_method(skeleton, "set_bone_rest", selected_bone, skeleton->get_bone_pose(selected_bone)); + ur->add_undo_method(skeleton, "set_bone_rest", selected_bone, skeleton->get_bone_rest(selected_bone)); + } ur->commit_action(); } @@ -466,11 +533,12 @@ void Skeleton3DEditor::_joint_tree_selection_changed() { const String bone_path = "bones/" + itos(b_idx) + "/"; pose_editor->set_target(bone_path); + pose_editor->set_keyable(keyable); selected_bone = b_idx; } } pose_editor->set_visible(selected); - set_rest_options_enabled(selected); + set_bone_options_enabled(selected); _update_properties(); _update_gizmo_visible(); } @@ -549,43 +617,82 @@ void Skeleton3DEditor::create_editors() { skeleton_options->set_text(TTR("Skeleton3D")); skeleton_options->set_icon(EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("Skeleton3D"), SNAME("EditorIcons"))); - skeleton_options->get_popup()->add_item(TTR("Init pose"), SKELETON_OPTION_INIT_POSE); - skeleton_options->get_popup()->add_item(TTR("Insert key of all bone poses"), SKELETON_OPTION_INSERT_KEYS); - skeleton_options->get_popup()->add_item(TTR("Insert key of bone poses already exist track"), SKELETON_OPTION_INSERT_KEYS_EXISTED); - skeleton_options->get_popup()->add_item(TTR("Create physical skeleton"), SKELETON_OPTION_CREATE_PHYSICAL_SKELETON); - - skeleton_options->get_popup()->connect("id_pressed", callable_mp(this, &Skeleton3DEditor::_on_click_skeleton_option)); + // Skeleton options. + PopupMenu *p = skeleton_options->get_popup(); + p->add_shortcut(ED_SHORTCUT("skeleton_3d_editor/init_all_poses", TTR("Init all Poses")), SKELETON_OPTION_INIT_ALL_POSES); + p->add_shortcut(ED_SHORTCUT("skeleton_3d_editor/init_selected_poses", TTR("Init selected Poses")), SKELETON_OPTION_INIT_SELECTED_POSES); + p->add_shortcut(ED_SHORTCUT("skeleton_3d_editor/all_poses_to_rests", TTR("Apply all poses to rests")), SKELETON_OPTION_ALL_POSES_TO_RESTS); + p->add_shortcut(ED_SHORTCUT("skeleton_3d_editor/selected_poses_to_rests", TTR("Apply selected poses to rests")), SKELETON_OPTION_SELECTED_POSES_TO_RESTS); + p->add_item(TTR("Create physical skeleton"), SKELETON_OPTION_CREATE_PHYSICAL_SKELETON); - // Create Rest Option in Top Menu Bar. - rest_options = memnew(MenuButton); - ne->add_control_to_menu_panel(rest_options); - - rest_options->set_text(TTR("Edit Rest")); - rest_options->set_icon(EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("BoneAttachment3D"), SNAME("EditorIcons"))); - - rest_options->get_popup()->add_item(TTR("Apply current pose to rest"), REST_OPTION_POSE_TO_REST); - rest_options->get_popup()->connect("id_pressed", callable_mp(this, &Skeleton3DEditor::_on_click_rest_option)); - set_rest_options_enabled(false); + p->connect("id_pressed", callable_mp(this, &Skeleton3DEditor::_on_click_skeleton_option)); + set_bone_options_enabled(false); Vector<Variant> button_binds; button_binds.resize(1); edit_mode_button = memnew(Button); ne->add_control_to_menu_panel(edit_mode_button); - edit_mode_button->set_tooltip(TTR("Edit Mode\nShow buttons on joints.")); - edit_mode_button->set_toggle_mode(true); edit_mode_button->set_flat(true); + edit_mode_button->set_toggle_mode(true); + edit_mode_button->set_focus_mode(FOCUS_NONE); + edit_mode_button->set_tooltip(TTR("Edit Mode\nShow buttons on joints.")); edit_mode_button->connect("toggled", callable_mp(this, &Skeleton3DEditor::edit_mode_toggled)); edit_mode = false; - set_keyable(te->has_keying()); - if (skeleton) { skeleton->add_child(handles_mesh_instance); handles_mesh_instance->set_skeleton_path(NodePath("")); } + // Keying buttons. + animation_hb = memnew(HBoxContainer); + ne->add_control_to_menu_panel(animation_hb); + animation_hb->add_child(memnew(VSeparator)); + animation_hb->hide(); + + key_loc_button = memnew(Button); + key_loc_button->set_flat(true); + key_loc_button->set_toggle_mode(true); + key_loc_button->set_pressed(false); + key_loc_button->set_focus_mode(FOCUS_NONE); + key_loc_button->set_tooltip(TTR("Translation mask for inserting keys.")); + animation_hb->add_child(key_loc_button); + + key_rot_button = memnew(Button); + key_rot_button->set_flat(true); + key_rot_button->set_toggle_mode(true); + key_rot_button->set_pressed(true); + key_rot_button->set_focus_mode(FOCUS_NONE); + key_rot_button->set_tooltip(TTR("Rotation mask for inserting keys.")); + animation_hb->add_child(key_rot_button); + + key_scale_button = memnew(Button); + key_scale_button->set_flat(true); + key_scale_button->set_toggle_mode(true); + key_scale_button->set_pressed(false); + key_scale_button->set_focus_mode(FOCUS_NONE); + key_scale_button->set_tooltip(TTR("Scale mask for inserting keys.")); + animation_hb->add_child(key_scale_button); + + key_insert_button = memnew(Button); + key_insert_button->set_flat(true); + key_insert_button->set_focus_mode(FOCUS_NONE); + key_insert_button->connect("pressed", callable_mp(this, &Skeleton3DEditor::insert_keys), varray(false)); + key_insert_button->set_tooltip(TTR("Insert key of bone poses already exist track.")); + key_insert_button->set_shortcut(ED_SHORTCUT("skeleton_3d_editor/insert_key_to_existing_tracks", TTR("Insert Key (Existing Tracks)"), KEY_INSERT)); + animation_hb->add_child(key_insert_button); + + key_insert_all_button = memnew(Button); + key_insert_all_button->set_flat(true); + key_insert_all_button->set_focus_mode(FOCUS_NONE); + key_insert_all_button->connect("pressed", callable_mp(this, &Skeleton3DEditor::insert_keys), varray(true)); + key_insert_all_button->set_tooltip(TTR("Insert key of all bone poses.")); + key_insert_all_button->set_shortcut(ED_SHORTCUT("skeleton_3d_editor/insert_key_of_all_bones", TTR("Insert Key (All Bones)"), KEY_MASK_CMD + KEY_INSERT)); + animation_hb->add_child(key_insert_all_button); + + // Bone tree. const Color section_color = get_theme_color(SNAME("prop_subsection"), SNAME("Editor")); EditorInspectorSection *bones_section = memnew(EditorInspectorSection); @@ -613,12 +720,19 @@ void Skeleton3DEditor::create_editors() { pose_editor->set_label(TTR("Bone Transform")); pose_editor->set_visible(false); add_child(pose_editor); + + set_keyable(te->has_keying()); } void Skeleton3DEditor::_notification(int p_what) { switch (p_what) { case NOTIFICATION_READY: { - edit_mode_button->set_icon(get_theme_icon("ToolBoneSelect", "EditorIcons")); + edit_mode_button->set_icon(get_theme_icon(SNAME("ToolBoneSelect"), SNAME("EditorIcons"))); + key_loc_button->set_icon(get_theme_icon(SNAME("KeyPosition"), SNAME("EditorIcons"))); + key_rot_button->set_icon(get_theme_icon(SNAME("KeyRotation"), SNAME("EditorIcons"))); + key_scale_button->set_icon(get_theme_icon(SNAME("KeyScale"), SNAME("EditorIcons"))); + key_insert_button->set_icon(get_theme_icon(SNAME("Key"), SNAME("EditorIcons"))); + key_insert_all_button->set_icon(get_theme_icon(SNAME("NewKey"), SNAME("EditorIcons"))); get_tree()->connect("node_removed", callable_mp(this, &Skeleton3DEditor::_node_removed), Vector<Variant>(), Object::CONNECT_ONESHOT); break; } @@ -643,7 +757,6 @@ void Skeleton3DEditor::_node_removed(Node *p_node) { if (skeleton && p_node == skeleton) { skeleton = nullptr; skeleton_options->hide(); - rest_options->hide(); } _update_properties(); @@ -655,7 +768,6 @@ void Skeleton3DEditor::_bind_methods() { ClassDB::bind_method(D_METHOD("_joint_tree_rmb_select"), &Skeleton3DEditor::_joint_tree_rmb_select); ClassDB::bind_method(D_METHOD("_update_properties"), &Skeleton3DEditor::_update_properties); ClassDB::bind_method(D_METHOD("_on_click_skeleton_option"), &Skeleton3DEditor::_on_click_skeleton_option); - ClassDB::bind_method(D_METHOD("_on_click_rest_option"), &Skeleton3DEditor::_on_click_rest_option); ClassDB::bind_method(D_METHOD("get_drag_data_fw"), &Skeleton3DEditor::get_drag_data_fw); ClassDB::bind_method(D_METHOD("can_drop_data_fw"), &Skeleton3DEditor::can_drop_data_fw); @@ -866,6 +978,11 @@ Skeleton3DEditor::~Skeleton3DEditor() { Node3DEditor *ne = Node3DEditor::get_singleton(); + if (animation_hb) { + ne->remove_control_from_menu_panel(animation_hb); + memdelete(animation_hb); + } + if (separator) { ne->remove_control_from_menu_panel(separator); memdelete(separator); @@ -876,11 +993,6 @@ Skeleton3DEditor::~Skeleton3DEditor() { memdelete(skeleton_options); } - if (rest_options) { - ne->remove_control_from_menu_panel(rest_options); - memdelete(rest_options); - } - if (edit_mode_button) { ne->remove_control_from_menu_panel(edit_mode_button); memdelete(edit_mode_button); diff --git a/editor/plugins/skeleton_3d_editor_plugin.h b/editor/plugins/skeleton_3d_editor_plugin.h index 3b4dd362fb..1dd2d2281d 100644 --- a/editor/plugins/skeleton_3d_editor_plugin.h +++ b/editor/plugins/skeleton_3d_editor_plugin.h @@ -45,7 +45,6 @@ class Joint; class PhysicalBone3D; class Skeleton3DEditorPlugin; class Button; -class CheckBox; class BoneTransformEditor : public VBoxContainer { GDCLASS(BoneTransformEditor, VBoxContainer); @@ -67,9 +66,6 @@ class BoneTransformEditor : public VBoxContainer { UndoRedo *undo_redo; - // Button *key_button = nullptr; - - bool keyable = false; bool toggle_enabled = false; bool updating = false; @@ -79,6 +75,8 @@ class BoneTransformEditor : public VBoxContainer { void _value_changed(const String &p_property, Variant p_value, const String &p_name, bool p_changing); + void _property_keyed(const String &p_path, bool p_advance); + protected: void _notification(int p_what); @@ -88,6 +86,7 @@ public: // Which transform target to modify. void set_target(const String &p_prop); void set_label(const String &p_label) { label = p_label; } + void set_keyable(const bool p_keyable); void _update_properties(); }; @@ -98,14 +97,11 @@ class Skeleton3DEditor : public VBoxContainer { friend class Skeleton3DEditorPlugin; enum SkeletonOption { - SKELETON_OPTION_INIT_POSE, - SKELETON_OPTION_INSERT_KEYS, - SKELETON_OPTION_INSERT_KEYS_EXISTED, - SKELETON_OPTION_CREATE_PHYSICAL_SKELETON - }; - - enum RestOption { - REST_OPTION_POSE_TO_REST + SKELETON_OPTION_INIT_ALL_POSES, + SKELETON_OPTION_INIT_SELECTED_POSES, + SKELETON_OPTION_ALL_POSES_TO_RESTS, + SKELETON_OPTION_SELECTED_POSES_TO_RESTS, + SKELETON_OPTION_CREATE_PHYSICAL_SKELETON, }; struct BoneInfo { @@ -124,11 +120,17 @@ class Skeleton3DEditor : public VBoxContainer { VSeparator *separator; MenuButton *skeleton_options = nullptr; - MenuButton *rest_options = nullptr; Button *edit_mode_button; bool edit_mode = false; + HBoxContainer *animation_hb; + Button *key_loc_button; + Button *key_rot_button; + Button *key_scale_button; + Button *key_insert_button; + Button *key_insert_all_button; + EditorFileDialog *file_dialog = nullptr; bool keyable; @@ -136,7 +138,6 @@ class Skeleton3DEditor : public VBoxContainer { static Skeleton3DEditor *singleton; void _on_click_skeleton_option(int p_skeleton_option); - void _on_click_rest_option(int p_rest_option); void _file_selected(const String &p_file); TreeItem *_find(TreeItem *p_node, const NodePath &p_path); void edit_mode_toggled(const bool pressed); @@ -148,9 +149,10 @@ class Skeleton3DEditor : public VBoxContainer { void create_editors(); - void init_pose(); - void insert_keys(bool p_all_bones); - void pose_to_rest(); + void init_pose(const bool p_all_bones); + void pose_to_rest(const bool p_all_bones); + + void insert_keys(const bool p_all_bones); void create_physical_skeleton(); PhysicalBone3D *create_physical_bone(int bone_id, int bone_child_id, const Vector<BoneInfo> &bones_infos); @@ -160,7 +162,7 @@ class Skeleton3DEditor : public VBoxContainer { void drop_data_fw(const Point2 &p_point, const Variant &p_data, Control *p_from); void set_keyable(const bool p_keyable); - void set_rest_options_enabled(const bool p_rest_options_enabled); + void set_bone_options_enabled(const bool p_bone_options_enabled); // Handle. MeshInstance3D *handles_mesh_instance; 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/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/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/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/gltf/gltf_document.cpp b/modules/gltf/gltf_document.cpp index b8da3a713b..0df08a7996 100644 --- a/modules/gltf/gltf_document.cpp +++ b/modules/gltf/gltf_document.cpp @@ -6460,7 +6460,7 @@ void GLTFDocument::_convert_animation(Ref<GLTFState> state, AnimationPlayer *ap, for (int32_t shape_i = 0; shape_i < mesh->get_blend_shape_count(); shape_i++) { String shape_name = mesh->get_blend_shape_name(shape_i); NodePath shape_path = String(path) + ":" + shape_name; - int32_t shape_track_i = animation->find_track(shape_path); + int32_t shape_track_i = animation->find_track(shape_path, Animation::TYPE_BLEND_SHAPE); if (shape_track_i == -1) { GLTFAnimation::Channel<float> weight; weight.interpolation = GLTFAnimation::INTERP_LINEAR; 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/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/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/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/linuxbsd/display_server_x11.cpp b/platform/linuxbsd/display_server_x11.cpp index c0e5aac938..212b6762e1 100644 --- a/platform/linuxbsd/display_server_x11.cpp +++ b/platform/linuxbsd/display_server_x11.cpp @@ -124,6 +124,7 @@ bool DisplayServerX11::has_feature(Feature p_feature) const { #ifdef DBUS_ENABLED case FEATURE_KEEP_SCREEN_ON: #endif + case FEATURE_CLIPBOARD_PRIMARY: return true; default: { } 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/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/skeleton_3d.cpp b/scene/3d/skeleton_3d.cpp index fbc3767151..e3744ad5e9 100644 --- a/scene/3d/skeleton_3d.cpp +++ b/scene/3d/skeleton_3d.cpp @@ -178,32 +178,32 @@ void Skeleton3D::_get_property_list(List<PropertyInfo> *p_list) const { } void Skeleton3D::_validate_property(PropertyInfo &property) const { - PackedStringArray spr = property.name.split("/"); - if (spr.size() == 3 && spr[0] == "bones") { - if (spr[2] == "rest") { + PackedStringArray split = property.name.split("/"); + if (split.size() == 3 && split[0] == "bones") { + if (split[2] == "rest") { property.usage |= PROPERTY_USAGE_READ_ONLY; } if (is_show_rest_only()) { - if (spr[2] == "enabled") { + if (split[2] == "enabled") { property.usage |= PROPERTY_USAGE_READ_ONLY; } - if (spr[2] == "position") { + if (split[2] == "position") { property.usage |= PROPERTY_USAGE_READ_ONLY; } - if (spr[2] == "rotation") { + if (split[2] == "rotation") { property.usage |= PROPERTY_USAGE_READ_ONLY; } - if (spr[2] == "scale") { + if (split[2] == "scale") { property.usage |= PROPERTY_USAGE_READ_ONLY; } - } else if (!is_bone_enabled(spr[1].to_int())) { - if (spr[2] == "position") { + } else if (!is_bone_enabled(split[1].to_int())) { + if (split[2] == "position") { property.usage |= PROPERTY_USAGE_READ_ONLY; } - if (spr[2] == "rotation") { + if (split[2] == "rotation") { property.usage |= PROPERTY_USAGE_READ_ONLY; } - if (spr[2] == "scale") { + if (split[2] == "scale") { property.usage |= PROPERTY_USAGE_READ_ONLY; } } 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/line_edit.cpp b/scene/gui/line_edit.cpp index 99c5e3bf0c..dda1151273 100644 --- a/scene/gui/line_edit.cpp +++ b/scene/gui/line_edit.cpp @@ -235,7 +235,7 @@ void LineEdit::gui_input(const Ref<InputEvent> &p_event) { return; } - if (is_middle_mouse_paste_enabled() && b->is_pressed() && b->get_button_index() == MOUSE_BUTTON_MIDDLE && is_editable()) { + if (is_middle_mouse_paste_enabled() && b->is_pressed() && b->get_button_index() == MOUSE_BUTTON_MIDDLE && is_editable() && DisplayServer::get_singleton()->has_feature(DisplayServer::FEATURE_CLIPBOARD_PRIMARY)) { String paste_buffer = DisplayServer::get_singleton()->clipboard_get_primary().strip_escapes(); deselect(); @@ -290,7 +290,7 @@ void LineEdit::gui_input(const Ref<InputEvent> &p_event) { selection.double_click = true; last_dblclk = 0; caret_column = selection.begin; - if (!pass) { + if (!pass && DisplayServer::get_singleton()->has_feature(DisplayServer::FEATURE_CLIPBOARD_PRIMARY)) { DisplayServer::get_singleton()->clipboard_set_primary(text); } } else if (b->is_double_click()) { @@ -308,7 +308,7 @@ void LineEdit::gui_input(const Ref<InputEvent> &p_event) { break; } } - if (!pass) { + if (!pass && DisplayServer::get_singleton()->has_feature(DisplayServer::FEATURE_CLIPBOARD_PRIMARY)) { DisplayServer::get_singleton()->clipboard_set_primary(text.substr(selection.begin, selection.end - selection.begin)); } } @@ -328,7 +328,7 @@ void LineEdit::gui_input(const Ref<InputEvent> &p_event) { update(); } else { - if (selection.enabled && !pass && b->get_button_index() == MOUSE_BUTTON_LEFT) { + if (selection.enabled && !pass && b->get_button_index() == MOUSE_BUTTON_LEFT && DisplayServer::get_singleton()->has_feature(DisplayServer::FEATURE_CLIPBOARD_PRIMARY)) { DisplayServer::get_singleton()->clipboard_set_primary(text.substr(selection.begin, selection.end - selection.begin)); } if (!text.is_empty() && is_editable() && clear_button_enabled) { diff --git a/scene/gui/rich_text_label.cpp b/scene/gui/rich_text_label.cpp index bc6552c208..31767dd263 100644 --- a/scene/gui/rich_text_label.cpp +++ b/scene/gui/rich_text_label.cpp @@ -1596,14 +1596,16 @@ void RichTextLabel::gui_input(const Ref<InputEvent> &p_event) { selection.to_char = words[i + 1]; selection.active = true; - DisplayServer::get_singleton()->clipboard_set_primary(get_selected_text()); + if (DisplayServer::get_singleton()->has_feature(DisplayServer::FEATURE_CLIPBOARD_PRIMARY)) { + DisplayServer::get_singleton()->clipboard_set_primary(get_selected_text()); + } update(); break; } } } } else if (!b->is_pressed()) { - if (selection.enabled) { + if (selection.enabled && DisplayServer::get_singleton()->has_feature(DisplayServer::FEATURE_CLIPBOARD_PRIMARY)) { DisplayServer::get_singleton()->clipboard_set_primary(get_selected_text()); } selection.click_item = nullptr; @@ -2815,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; @@ -3543,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/text_edit.cpp b/scene/gui/text_edit.cpp index a1d66d8544..8cb3b23020 100644 --- a/scene/gui/text_edit.cpp +++ b/scene/gui/text_edit.cpp @@ -1534,7 +1534,7 @@ void TextEdit::gui_input(const Ref<InputEvent> &p_gui_input) { update(); } - if (is_middle_mouse_paste_enabled() && mb->get_button_index() == MOUSE_BUTTON_MIDDLE) { + if (is_middle_mouse_paste_enabled() && mb->get_button_index() == MOUSE_BUTTON_MIDDLE && DisplayServer::get_singleton()->has_feature(DisplayServer::FEATURE_CLIPBOARD_PRIMARY)) { paste_primary_clipboard(); } @@ -1575,7 +1575,9 @@ void TextEdit::gui_input(const Ref<InputEvent> &p_gui_input) { dragging_selection = false; can_drag_minimap = false; click_select_held->stop(); - DisplayServer::get_singleton()->clipboard_set_primary(get_selected_text()); + if (DisplayServer::get_singleton()->has_feature(DisplayServer::FEATURE_CLIPBOARD_PRIMARY)) { + DisplayServer::get_singleton()->clipboard_set_primary(get_selected_text()); + } } // Notify to show soft keyboard. @@ -5167,7 +5169,7 @@ void TextEdit::_paste_internal() { } void TextEdit::_paste_primary_clipboard_internal() { - if (!is_editable()) { + if (!is_editable() || !DisplayServer::get_singleton()->has_feature(DisplayServer::FEATURE_CLIPBOARD_PRIMARY)) { return; } @@ -5520,7 +5522,9 @@ void TextEdit::_update_selection_mode_word() { } } - DisplayServer::get_singleton()->clipboard_set_primary(get_selected_text()); + if (DisplayServer::get_singleton()->has_feature(DisplayServer::FEATURE_CLIPBOARD_PRIMARY)) { + DisplayServer::get_singleton()->clipboard_set_primary(get_selected_text()); + } update(); @@ -5549,7 +5553,9 @@ void TextEdit::_update_selection_mode_line() { set_caret_column(0); select(selection.selecting_line, selection.selecting_column, line, col); - DisplayServer::get_singleton()->clipboard_set_primary(get_selected_text()); + if (DisplayServer::get_singleton()->has_feature(DisplayServer::FEATURE_CLIPBOARD_PRIMARY)) { + DisplayServer::get_singleton()->clipboard_set_primary(get_selected_text()); + } update(); 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/resources/animation.cpp b/scene/resources/animation.cpp index 08b78a39b1..55d58bf156 100644 --- a/scene/resources/animation.cpp +++ b/scene/resources/animation.cpp @@ -837,9 +837,9 @@ NodePath Animation::track_get_path(int p_track) const { return tracks[p_track]->path; } -int Animation::find_track(const NodePath &p_path) const { +int Animation::find_track(const NodePath &p_path, const TrackType p_type) const { for (int i = 0; i < tracks.size(); i++) { - if (tracks[i]->path == p_path) { + if (tracks[i]->path == p_path && tracks[i]->type == p_type) { return i; } }; @@ -3027,7 +3027,7 @@ void Animation::_bind_methods() { ClassDB::bind_method(D_METHOD("track_get_type", "track_idx"), &Animation::track_get_type); ClassDB::bind_method(D_METHOD("track_get_path", "track_idx"), &Animation::track_get_path); ClassDB::bind_method(D_METHOD("track_set_path", "track_idx", "path"), &Animation::track_set_path); - ClassDB::bind_method(D_METHOD("find_track", "path"), &Animation::find_track); + ClassDB::bind_method(D_METHOD("find_track", "path", "type"), &Animation::find_track); ClassDB::bind_method(D_METHOD("track_move_up", "track_idx"), &Animation::track_move_up); ClassDB::bind_method(D_METHOD("track_move_down", "track_idx"), &Animation::track_move_down); diff --git a/scene/resources/animation.h b/scene/resources/animation.h index 4ee0741d87..6de739f737 100644 --- a/scene/resources/animation.h +++ b/scene/resources/animation.h @@ -281,8 +281,7 @@ public: void track_set_path(int p_track, const NodePath &p_path); NodePath track_get_path(int p_track) const; - int find_track(const NodePath &p_path) const; - // transform + int find_track(const NodePath &p_path, const TrackType p_type) const; void track_move_up(int p_track); void track_move_down(int p_track); diff --git a/servers/display_server.cpp b/servers/display_server.cpp index a6101530c8..3fb47e8f05 100644 --- a/servers/display_server.cpp +++ b/servers/display_server.cpp @@ -497,6 +497,7 @@ void DisplayServer::_bind_methods() { BIND_ENUM_CONSTANT(FEATURE_NATIVE_ICON); BIND_ENUM_CONSTANT(FEATURE_ORIENTATION); BIND_ENUM_CONSTANT(FEATURE_SWAP_BUFFERS); + BIND_ENUM_CONSTANT(FEATURE_CLIPBOARD_PRIMARY); BIND_ENUM_CONSTANT(MOUSE_MODE_VISIBLE); BIND_ENUM_CONSTANT(MOUSE_MODE_HIDDEN); diff --git a/servers/display_server.h b/servers/display_server.h index 8af7946a1e..2595cf2eb8 100644 --- a/servers/display_server.h +++ b/servers/display_server.h @@ -114,6 +114,7 @@ public: FEATURE_ORIENTATION, FEATURE_SWAP_BUFFERS, FEATURE_KEEP_SCREEN_ON, + FEATURE_CLIPBOARD_PRIMARY, }; virtual bool has_feature(Feature p_feature) const = 0; diff --git a/servers/physics_2d/godot_body_2d.cpp b/servers/physics_2d/godot_body_2d.cpp index a18c748e1d..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(); } } @@ -558,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); 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/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_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, |