diff --git a/.github/actions/godot-cpp-build/action.yml b/.github/actions/godot-cpp-build/action.yml index 9596c5a8fd..1046f09470 100644 --- a/.github/actions/godot-cpp-build/action.yml +++ b/.github/actions/godot-cpp-build/action.yml @@ -1,9 +1,6 @@ name: Build godot-cpp description: Build godot-cpp with the provided options. -env: - GODOT_CPP_BRANCH: 4.3 - inputs: bin: description: Path to the Godot binary. @@ -16,6 +13,10 @@ inputs: description: The SCons cache path. default: ${{ github.workspace }}/.scons_cache/ type: string + godot-cpp-branch: + description: The godot-cpp branch. + default: master + type: string runs: using: composite @@ -25,7 +26,7 @@ runs: with: submodules: recursive repository: godotengine/godot-cpp - ref: ${{ env.GODOT_CPP_BRANCH }} + ref: ${{ inputs.godot-cpp-branch }} path: godot-cpp - name: Extract API diff --git a/.github/workflows/android_builds.yml b/.github/workflows/android_builds.yml index 443b0be0f3..865f826bc0 100644 --- a/.github/workflows/android_builds.yml +++ b/.github/workflows/android_builds.yml @@ -5,7 +5,7 @@ on: # Global Settings env: # Used for the cache key. Add version suffix to force clean build. - GODOT_BASE_BRANCH: master + GODOT_BASE_BRANCH: 4.4 SCONSFLAGS: verbose=yes warnings=extra werror=yes debug_symbols=no module_text_server_fb_enabled=yes strict_checks=yes jobs: @@ -62,8 +62,8 @@ jobs: - name: Download pre-built Android Swappy Frame Pacing Library uses: dsaltares/fetch-gh-release-asset@1.1.2 with: - repo: darksylinc/godot-swappy - version: tags/v2023.3.0.0 + repo: godotengine/godot-swappy + version: tags/from-source-2025-01-31 file: godot-swappy.7z target: swappy/godot-swappy.7z diff --git a/.github/workflows/ios_builds.yml b/.github/workflows/ios_builds.yml index f5a4f755de..9f02b32c58 100644 --- a/.github/workflows/ios_builds.yml +++ b/.github/workflows/ios_builds.yml @@ -5,7 +5,7 @@ on: # Global Settings env: # Used for the cache key. Add version suffix to force clean build. - GODOT_BASE_BRANCH: master + GODOT_BASE_BRANCH: 4.4 SCONSFLAGS: verbose=yes warnings=extra werror=yes debug_symbols=no module_text_server_fb_enabled=yes strict_checks=yes jobs: diff --git a/.github/workflows/linux_builds.yml b/.github/workflows/linux_builds.yml index f035463734..739f73d61f 100644 --- a/.github/workflows/linux_builds.yml +++ b/.github/workflows/linux_builds.yml @@ -5,7 +5,8 @@ on: # Global Settings env: # Used for the cache key. Add version suffix to force clean build. - GODOT_BASE_BRANCH: master + GODOT_BASE_BRANCH: 4.4 + GODOT_CPP_BRANCH: 4.4 SCONSFLAGS: verbose=yes warnings=extra werror=yes module_text_server_fb_enabled=yes strict_checks=yes DOTNET_NOLOGO: true DOTNET_CLI_TELEMETRY_OPTOUT: true @@ -176,6 +177,7 @@ jobs: with: bin: ${{ matrix.bin }} scons-flags: target=template_debug dev_build=yes verbose=yes + godot-cpp-branch: ${{ env.GODOT_CPP_BRANCH }} - name: Compilation (redot-cpp) uses: ./.github/actions/redot-cpp-build diff --git a/.github/workflows/macos_builds.yml b/.github/workflows/macos_builds.yml index 0e3b8b35d5..67783b3f8b 100644 --- a/.github/workflows/macos_builds.yml +++ b/.github/workflows/macos_builds.yml @@ -5,7 +5,7 @@ on: # Global Settings env: # Used for the cache key. Add version suffix to force clean build. - GODOT_BASE_BRANCH: master + GODOT_BASE_BRANCH: 4.4 SCONSFLAGS: verbose=yes warnings=extra werror=yes module_text_server_fb_enabled=yes strict_checks=yes jobs: diff --git a/.github/workflows/web_builds.yml b/.github/workflows/web_builds.yml index 2f08d8c2f9..24030ac8bf 100644 --- a/.github/workflows/web_builds.yml +++ b/.github/workflows/web_builds.yml @@ -5,7 +5,7 @@ on: # Global Settings env: # Used for the cache key. Add version suffix to force clean build. - GODOT_BASE_BRANCH: master + GODOT_BASE_BRANCH: 4.4 SCONSFLAGS: verbose=yes warnings=extra werror=yes debug_symbols=no use_closure_compiler=yes strict_checks=yes EM_VERSION: 3.1.64 diff --git a/.github/workflows/windows_builds.yml b/.github/workflows/windows_builds.yml index 351d00699a..5b78948923 100644 --- a/.github/workflows/windows_builds.yml +++ b/.github/workflows/windows_builds.yml @@ -6,7 +6,7 @@ on: # SCONS_CACHE for windows must be set in the build environment env: # Used for the cache key. Add version suffix to force clean build. - GODOT_BASE_BRANCH: master + GODOT_BASE_BRANCH: 4.4 SCONSFLAGS: verbose=yes warnings=extra werror=yes module_text_server_fb_enabled=yes d3d12=yes strict_checks=yes "angle_libs=${{ github.workspace }}/" SCONS_CACHE_MSVC_CONFIG: true diff --git a/.gitignore b/.gitignore index 2c3bf742ba..8adc7b786c 100644 --- a/.gitignore +++ b/.gitignore @@ -263,6 +263,11 @@ bld/ !thirdparty/**/arm/ !thirdparty/**/arm64/ +thirdparty/swappy-frame-pacing/arm64-v8a/abi.json +thirdparty/swappy-frame-pacing/armeabi-v7a/abi.json +thirdparty/swappy-frame-pacing/x86/abi.json +thirdparty/swappy-frame-pacing/x86_64/abi.json + # Visual Studio 2015/2017 cache/options directory .vs/ diff --git a/CHANGELOG.md b/CHANGELOG.md index d77d448252..3a56eae6c1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,204 @@ previous feature release. It is equivalent to the listings on our Changelogs for earlier feature releases are available in their respective Git branches, and linked at the [end of this file](#Past-releases). +## 4.4.1 - 2025-03-26 + +- [Release announcement](https://godotengine.org/article/maintenance-release-godot-4-4-1) +- [Interactive changelog](https://godotengine.github.io/godot-interactive-changelog/#4.4.1) + +#### 2D + +- Fix wrong canvas camera override panning in the runtime debugger ([GH-103489](https://github.com/godotengine/godot/pull/103489)). + +#### 3D + +- Fix `RemoteTransform3D` to always use global rotation if `use_global_coordinates` is true ([GH-97498](https://github.com/godotengine/godot/pull/97498)). +- Unify CSGPolygon3D gizmos with the other geometries ([GH-103301](https://github.com/godotengine/godot/pull/103301)). + +#### Animation + +- Fix console errors and crash in cleanup code for PhysicalBoneSimulator3D ([GH-103921](https://github.com/godotengine/godot/pull/103921)). +- Fix missing `process_state` error in blend spaces ([GH-104018](https://github.com/godotengine/godot/pull/104018)). +- Fix rest translation space in `LookAtModifier3D` ([GH-104217](https://github.com/godotengine/godot/pull/104217)). + +#### Audio + +- Set interactive music streams as meta streams ([GH-104054](https://github.com/godotengine/godot/pull/104054)). +- Fix AudioEffectPitchShift issues when `pitch_scale` is set to 1 ([GH-104090](https://github.com/godotengine/godot/pull/104090)). + +#### Buildsystem + +- CI: Use correct godot-cpp branch ([GH-103514](https://github.com/godotengine/godot/pull/103514)). +- Android: Fix build with `disable_3d` ([GH-103523](https://github.com/godotengine/godot/pull/103523)). + +#### C# + +- Use `ObjectID` when converting `Variant` to `GodotObject` ([GH-98034](https://github.com/godotengine/godot/pull/98034)). +- Skip re-saving `.csproj` when TFM is unchanged ([GH-103714](https://github.com/godotengine/godot/pull/103714)). +- Fix missing Vector4(i) and Projection in C# bindings generator ([GH-104097](https://github.com/godotengine/godot/pull/104097)). + +#### Core + +- PackedScene: Use ObjectID for DeferredNodePathProperties base ([GH-103320](https://github.com/godotengine/godot/pull/103320)). +- Use single RNG instance for `FileAccessEncrypted` IV generation ([GH-103415](https://github.com/godotengine/godot/pull/103415)). +- Fix crash when calling `get_argument_count()` on Callable with freed object ([GH-103465](https://github.com/godotengine/godot/pull/103465)). +- Fix `Invalid Task ID` errors in `ResourceLoader` ([GH-104060](https://github.com/godotengine/godot/pull/104060)). +- Fix missing binding for `NOTIFICATION_WM_POSITION_CHANGED` ([GH-104083](https://github.com/godotengine/godot/pull/104083)). +- Cherry-picks for the 4.4 branch (future 4.4.1) - 3rd batch ([GH-104358](https://github.com/godotengine/godot/pull/104358)). + +#### Documentation + +- Update logo/run icon path in platform READMEs ([GH-103891](https://github.com/godotengine/godot/pull/103891)). +- Fix BBCode tag for NativeMenu class reference ([GH-103893](https://github.com/godotengine/godot/pull/103893)). +- Add instruction to wrap nested classes in `JavaClassWrapper` ([GH-104364](https://github.com/godotengine/godot/pull/104364)). + +#### Editor + +- Fix copying a Node with a signal potentially resulting in an editor crash ([GH-96372](https://github.com/godotengine/godot/pull/96372)). +- Use `FlowContainer` for `EditorNetworkProfiler` bar ([GH-102576](https://github.com/godotengine/godot/pull/102576)). +- Fix vbox separation in sections with `PROPERTY_USAGE_ARRAY` ([GH-103309](https://github.com/godotengine/godot/pull/103309)). +- Make `EditorProperty` and its child `EditorProperty` behave like sibling nodes when handling mouse events ([GH-103316](https://github.com/godotengine/godot/pull/103316)). +- Fix TextEdit scrolls wrong on text selection ([GH-103410](https://github.com/godotengine/godot/pull/103410)). +- Set editor's translation domain at root node ([GH-103447](https://github.com/godotengine/godot/pull/103447)). +- Restore "Show in File Manager" button functionality in `ProjectManager` ([GH-103454](https://github.com/godotengine/godot/pull/103454)). +- Update UID upgrade tool dialog message ([GH-103468](https://github.com/godotengine/godot/pull/103468)). +- Update script modified times when saved in EditorNode ([GH-103695](https://github.com/godotengine/godot/pull/103695)). +- Fix ownership when pasting non root with child nodes in new scene ([GH-103769](https://github.com/godotengine/godot/pull/103769)). +- Fix debugger's memory leak when project closes itself ([GH-104050](https://github.com/godotengine/godot/pull/104050)). +- Fix wrong height for top editors in the inspector ([GH-104181](https://github.com/godotengine/godot/pull/104181)). +- Fix Node dock broken right after opening project ([GH-104235](https://github.com/godotengine/godot/pull/104235)). +- Create .uid files for detected new files ([GH-104248](https://github.com/godotengine/godot/pull/104248)). +- Set window position when running project in maximized or full-screen mode to ensure it is opened on the correct screen ([GH-104253](https://github.com/godotengine/godot/pull/104253)). +- Fix editor crash when inspecting 2 objects handled by the same plugin ([GH-104296](https://github.com/godotengine/godot/pull/104296)). +- Fix editor crash on overrides for non-existent input mappings ([GH-104306](https://github.com/godotengine/godot/pull/104306)). +- Change root node transform warning to only show up for position ([GH-104331](https://github.com/godotengine/godot/pull/104331)). +- Fix use after free in the editor inspector section cleanup ([GH-104362](https://github.com/godotengine/godot/pull/104362)). +- Fix icons with non-ASCII file names in project manager ([GH-104403](https://github.com/godotengine/godot/pull/104403)). + +#### Export + +- Add "Go Online" button on Export Template Manager ([GH-103235](https://github.com/godotengine/godot/pull/103235)). +- [iOS export] Restore one-click deploy device enumeration using Xcode ([GH-103590](https://github.com/godotengine/godot/pull/103590)). +- Use `text_overrun` for project export errors ([GH-103598](https://github.com/godotengine/godot/pull/103598)). +- Android: Convert `compress_native_libraries` to a basic export option ([GH-104301](https://github.com/godotengine/godot/pull/104301)). + +#### GDExtension + +- Correctly register editor-only `OpenXR*` classes' `api_type` ([GH-103869](https://github.com/godotengine/godot/pull/103869)). + +#### GDScript + +- Fix head class range to include `class_name` ([GH-104114](https://github.com/godotengine/godot/pull/104114)). +- Add clearing of `static_gdscript_cache` to `GDScriptCache` ([GH-104281](https://github.com/godotengine/godot/pull/104281)). + +#### GUI + +- Fix `changed` signal emission in `Curve::set_point_offset` ([GH-96296](https://github.com/godotengine/godot/pull/96296)). +- Fix spinbox decimal issues when `update_on_text_changed` = true ([GH-100684](https://github.com/godotengine/godot/pull/100684)). +- Fix error when embedded popup is closed while resizing ([GH-102504](https://github.com/godotengine/godot/pull/102504)). +- Fix Tree keyboard navigation in RTL direction ([GH-102865](https://github.com/godotengine/godot/pull/102865)). +- Apply `fix_alpha_edges` for both theme icons and font glyphs ([GH-102880](https://github.com/godotengine/godot/pull/102880)). +- VideoStreamPlayer: Stop video on exit tree ([GH-103396](https://github.com/godotengine/godot/pull/103396)). +- LineEdit: Fix `caret_force_displayed` ([GH-103508](https://github.com/godotengine/godot/pull/103508)). +- Use `Viewport`'s default texture filter/repeat in GUI tooltips ([GH-103636](https://github.com/godotengine/godot/pull/103636)). +- Label: Fix min. size calculation counting extra spacing twice ([GH-103728](https://github.com/godotengine/godot/pull/103728)). +- Fix memory leak caused by hidden tooltip controls ([GH-103793](https://github.com/godotengine/godot/pull/103793)). +- Sync `display/window/size/initial_position_type` and `Window::WINDOW_INITIAL_POSITION_` enum ([GH-103961](https://github.com/godotengine/godot/pull/103961)). +- Add missing `ETR`/`TTR` markups ([GH-104020](https://github.com/godotengine/godot/pull/104020)). +- Fix game crashes when adding color preset after clearing presets in another control ([GH-104227](https://github.com/godotengine/godot/pull/104227)). + +#### I18n + +- Fix some i18n issues in visual shader editor ([GH-103756](https://github.com/godotengine/godot/pull/103756)). +- ScriptEditor: Disable auto translation of the filename label ([GH-103842](https://github.com/godotengine/godot/pull/103842)). +- Fix Android build template message translation ([GH-104151](https://github.com/godotengine/godot/pull/104151)). + +#### Import + +- Fix headless import always emits errors ([GH-103403](https://github.com/godotengine/godot/pull/103403)). +- BasisUniversal: Ensure ASTC's HDR variant is supported when transcoding ([GH-103766](https://github.com/godotengine/godot/pull/103766)). +- ResourceLoader: Do not wait for the main thread during initial reimport ([GH-104013](https://github.com/godotengine/godot/pull/104013)). +- Force multiple of 4 sizes for Betsy compressor ([GH-104275](https://github.com/godotengine/godot/pull/104275)). +- Fix crash when reimporting nested gltf scenes ([GH-104384](https://github.com/godotengine/godot/pull/104384)). + +#### Input + +- Fix Android mouse capture issues ([GH-103413](https://github.com/godotengine/godot/pull/103413)). +- [macOS/iOS] Ensure only one axis change event is produced during single `process_joypads()` call ([GH-104314](https://github.com/godotengine/godot/pull/104314)). + +#### Navigation + +- Make NavigationLink3D properly update on visibility change ([GH-103588](https://github.com/godotengine/godot/pull/103588)). + +#### Particles + +- Fix particle jitter when scene tree is paused ([GH-95912](https://github.com/godotengine/godot/pull/95912)). +- Fix GPU particles not emitting at some configured rates when scale curve is zero ([GH-103121](https://github.com/godotengine/godot/pull/103121)). + +#### Physics + +- Fix interpolation in XR ([GH-103233](https://github.com/godotengine/godot/pull/103233)). +- Fix broken negative scaling when using Jolt Physics ([GH-103440](https://github.com/godotengine/godot/pull/103440)). +- Fix `ConcavePolygonShape3D` always enabling `backface_collision` when using Jolt Physics ([GH-104310](https://github.com/godotengine/godot/pull/104310)). +- Fix `shape` always being zero with `get_rest_info` when using Jolt Physics ([GH-104599](https://github.com/godotengine/godot/pull/104599)). + +#### Plugin + +- JavaClassWrapper: Improve handling of typed array arguments ([GH-102817](https://github.com/godotengine/godot/pull/102817)). +- JavaClassWrapper: Fix converting returned arrays to Godot types ([GH-103375](https://github.com/godotengine/godot/pull/103375)). +- JavaClassWrapper: Fix conversion to/from `org.godotengine.godot.Dictionary` that regressed ([GH-103733](https://github.com/godotengine/godot/pull/103733)). +- JavaClassWrapper: Fix mistake in last fix for `org.godotengine.godot.Dictionary` conversion ([GH-104156](https://github.com/godotengine/godot/pull/104156)). + +#### Porting + +- Android: Fix editor crash after changing device language ([GH-103419](https://github.com/godotengine/godot/pull/103419)). +- X11: Fix check for `is_maximized` to require both horizontal and vertical ([GH-103526](https://github.com/godotengine/godot/pull/103526)). +- [Linux/BSD] Offload RenderingDevice creation test to subprocess ([GH-103560](https://github.com/godotengine/godot/pull/103560)). +- Windows: Fix `get_modified_time` on locked files ([GH-103622](https://github.com/godotengine/godot/pull/103622)). +- Swap Nintendo face buttons on macOS ([GH-103661](https://github.com/godotengine/godot/pull/103661)). +- Use more efficient sleep approach on Windows when low-processor mode is enabled ([GH-103773](https://github.com/godotengine/godot/pull/103773)). +- [macOS/iOS] Fix system font family descriptor leak ([GH-103872](https://github.com/godotengine/godot/pull/103872)). +- macOS: Fix editor loading crash on native menu click ([GH-103892](https://github.com/godotengine/godot/pull/103892)). +- macOS: Update mouse-entered state when subwindow closes ([GH-104328](https://github.com/godotengine/godot/pull/104328)). + +#### Rendering + +- Add ASTC HDR format variants ([GH-102777](https://github.com/godotengine/godot/pull/102777)). +- Fix voxelizer normals ([GH-102893](https://github.com/godotengine/godot/pull/102893)). +- Fix 2D quad primitive missing lighting data in GLES3 renderer ([GH-102908](https://github.com/godotengine/godot/pull/102908)). +- Fix uninitialized value in Tonemap ([GH-103092](https://github.com/godotengine/godot/pull/103092)). +- Use separate WorkThreadPool for shader compiler ([GH-103506](https://github.com/godotengine/godot/pull/103506)). +- Fix incorrect parameters passed to VMA ([GH-103730](https://github.com/godotengine/godot/pull/103730)). +- MetalFX: Change fallback behavior ([GH-103792](https://github.com/godotengine/godot/pull/103792)). +- Fix GLES3 `gaussian_blur` mipmap setup ([GH-103878](https://github.com/godotengine/godot/pull/103878)). +- CPUParticles2D: Fix physics interpolation after entering tree with `emitting = false` ([GH-103966](https://github.com/godotengine/godot/pull/103966)). +- Vulkan: Disable layers in editor deemed buggy by RenderDoc ([GH-104154](https://github.com/godotengine/godot/pull/104154)). +- Renderer: Fix Metal handling of cube textures; assert equal dimensions ([GH-104341](https://github.com/godotengine/godot/pull/104341)). +- Disable broken Vulkan layers before running RenderingDevice tests ([GH-104572](https://github.com/godotengine/godot/pull/104572)). +- Vulkan: Re-enable Mesa device select layer ([GH-104592](https://github.com/godotengine/godot/pull/104592)). + +#### Shaders + +- Fix 2D instance params crashing using outside of `main()` ([GH-103348](https://github.com/godotengine/godot/pull/103348)). +- Fix "unused varying" incorrect warning in shaders ([GH-103434](https://github.com/godotengine/godot/pull/103434)). +- 2D: Fix light shader accessing `TEXTURE_PIXEL_SIZE` ([GH-103617](https://github.com/godotengine/godot/pull/103617)). + +#### Tests + +- Fix `SCRIPT ERROR/ERROR/WARNING` on test output ([GH-103663](https://github.com/godotengine/godot/pull/103663)). + +#### Thirdparty + +- Theora: Fix YUV422/444 to RGB conversion ([GH-102859](https://github.com/godotengine/godot/pull/102859)). +- Update to latest version of Swappy ([GH-103409](https://github.com/godotengine/godot/pull/103409)). +- mbedTLS: Update to version 3.6.3 ([GH-104562](https://github.com/godotengine/godot/pull/104562)). + +#### XR + +- OpenXR: Fix OpenGL version warning when using GLES ([GH-103973](https://github.com/godotengine/godot/pull/103973)). +- Correct occlusion culling viewport location calculation when projection uses asymmetric FOV ([GH-104249](https://github.com/godotengine/godot/pull/104249)). + + ## 4.4 - 2025-03-03 - [Release announcement](https://godotengine.org/releases/4.4/) diff --git a/core/config/project_settings.cpp b/core/config/project_settings.cpp index 978fc14c21..7cb298bed9 100644 --- a/core/config/project_settings.cpp +++ b/core/config/project_settings.cpp @@ -1499,9 +1499,10 @@ ProjectSettings::ProjectSettings() { GLOBAL_DEF_BASIC(PropertyInfo(Variant::INT, "display/window/size/mode", PROPERTY_HINT_ENUM, "Windowed,Minimized,Maximized,Fullscreen,Exclusive Fullscreen"), 0); - // Keep the enum values in sync with the `DisplayServer::SCREEN_` enum. - GLOBAL_DEF_BASIC(PropertyInfo(Variant::INT, "display/window/size/initial_position_type", PROPERTY_HINT_ENUM, "Absolute,Center of Primary Screen,Center of Other Screen,Center of Screen With Mouse Pointer,Center of Screen With Keyboard Focus"), 1); + // Keep the enum values in sync with the `Window::WINDOW_INITIAL_POSITION_` enum. + GLOBAL_DEF_BASIC(PropertyInfo(Variant::INT, "display/window/size/initial_position_type", PROPERTY_HINT_ENUM, "Absolute:0,Center of Primary Screen:1,Center of Other Screen:3,Center of Screen With Mouse Pointer:4,Center of Screen With Keyboard Focus:5"), 1); GLOBAL_DEF_BASIC(PropertyInfo(Variant::VECTOR2I, "display/window/size/initial_position"), Vector2i()); + // Keep the enum values in sync with the `DisplayServer::SCREEN_` enum. GLOBAL_DEF_BASIC(PropertyInfo(Variant::INT, "display/window/size/initial_screen", PROPERTY_HINT_RANGE, "0,64,1,or_greater"), 0); GLOBAL_DEF_BASIC("display/window/size/resizable", true); diff --git a/core/io/file_access_encrypted.cpp b/core/io/file_access_encrypted.cpp index 6b4fbe8c8b..9117f4c9ad 100644 --- a/core/io/file_access_encrypted.cpp +++ b/core/io/file_access_encrypted.cpp @@ -32,9 +32,17 @@ #include "file_access_encrypted.h" -#include "core/crypto/crypto_core.h" #include "core/variant/variant.h" +CryptoCore::RandomGenerator *FileAccessEncrypted::_fae_static_rng = nullptr; + +void FileAccessEncrypted::deinitialize() { + if (_fae_static_rng) { + memdelete(_fae_static_rng); + _fae_static_rng = nullptr; + } +} + Error FileAccessEncrypted::open_and_parse(Ref p_base, const Vector &p_key, Mode p_mode, bool p_with_magic, const Vector &p_iv) { ERR_FAIL_COND_V_MSG(file.is_valid(), ERR_ALREADY_IN_USE, vformat("Can't open file while another file from path '%s' is open.", file->get_path_absolute())); ERR_FAIL_COND_V(p_key.size() != 32, ERR_INVALID_PARAMETER); @@ -50,9 +58,15 @@ Error FileAccessEncrypted::open_and_parse(Ref p_base, const Vectorinit() != OK) { + memdelete(_fae_static_rng); + _fae_static_rng = nullptr; + ERR_FAIL_V_MSG(FAILED, "Failed to initialize random number generator."); + } + } + Error err = _fae_static_rng->get_random_bytes(iv.ptrw(), 16); ERR_FAIL_COND_V(err != OK, err); } else { ERR_FAIL_COND_V(p_iv.size() != 16, ERR_INVALID_PARAMETER); diff --git a/core/io/file_access_encrypted.h b/core/io/file_access_encrypted.h index 544892e23f..73b6518268 100644 --- a/core/io/file_access_encrypted.h +++ b/core/io/file_access_encrypted.h @@ -33,6 +33,7 @@ #ifndef FILE_ACCESS_ENCRYPTED_H #define FILE_ACCESS_ENCRYPTED_H +#include "core/crypto/crypto_core.h" #include "core/io/file_access.h" #define ENCRYPTED_HEADER_MAGIC 0x43454447 @@ -59,6 +60,8 @@ private: void _close(); + static CryptoCore::RandomGenerator *_fae_static_rng; + public: Error open_and_parse(Ref p_base, const Vector &p_key, Mode p_mode, bool p_with_magic = true, const Vector &p_iv = Vector()); Error open_and_parse_password(Ref p_base, const String &p_key, Mode p_mode); @@ -99,6 +102,8 @@ public: virtual void close() override; + static void deinitialize(); + FileAccessEncrypted() {} ~FileAccessEncrypted(); }; diff --git a/core/io/resource_loader.cpp b/core/io/resource_loader.cpp index 905e197975..9548bcca75 100644 --- a/core/io/resource_loader.cpp +++ b/core/io/resource_loader.cpp @@ -266,6 +266,14 @@ void ResourceLoader::LoadToken::clear() { thread_load_tasks.erase(local_path); } local_path.clear(); // Mark as already cleared. + if (task_to_await) { + for (KeyValue &E : thread_load_tasks) { + if (E.value.task_id == task_to_await) { + task_to_await = 0; + break; // Same task is reused by nested loads, do not wait for completion here. + } + } + } } } @@ -774,6 +782,10 @@ Ref ResourceLoader::_load_complete(LoadToken &p_load_token, Error *r_e return _load_complete_inner(p_load_token, r_error, thread_load_lock); } +void ResourceLoader::set_is_import_thread(bool p_import_thread) { + import_thread = p_import_thread; +} + Ref ResourceLoader::_load_complete_inner(LoadToken &p_load_token, Error *r_error, MutexLock> &p_thread_load_lock) { if (r_error) { *r_error = OK; @@ -827,6 +839,12 @@ Ref ResourceLoader::_load_complete_inner(LoadToken &p_load_token, Erro p_thread_load_lock.temp_relock(); load_task.awaited = true; + // Mark nested loads with the same task id as awaited. + for (KeyValue &E : thread_load_tasks) { + if (E.value.task_id == load_task.task_id) { + E.value.awaited = true; + } + } DEV_ASSERT(load_task.status == THREAD_LOAD_FAILED || load_task.status == THREAD_LOAD_LOADED); } else if (load_task.need_wait) { @@ -888,9 +906,11 @@ Ref ResourceLoader::_load_complete_inner(LoadToken &p_load_token, Erro MessageQueue::get_main_singleton()->push_callable(callable_mp(rcc.source, &Resource::connect_changed).bind(rcc.callable, rcc.flags)); } } - core_bind::Semaphore done; - MessageQueue::get_main_singleton()->push_callable(callable_mp(&done, &core_bind::Semaphore::post).bind(1)); - done.wait(); + if (!import_thread) { // Main thread is blocked by initial resource reimport, do not wait. + core_bind::Semaphore done; + MessageQueue::get_main_singleton()->push_callable(callable_mp(&done, &core_bind::Semaphore::post).bind(1)); + done.wait(); + } } } } @@ -1567,6 +1587,7 @@ bool ResourceLoader::create_missing_resources_if_class_unavailable = false; bool ResourceLoader::abort_on_missing_resource = true; bool ResourceLoader::timestamp_on_load = false; +thread_local bool ResourceLoader::import_thread = false; thread_local int ResourceLoader::load_nesting = 0; thread_local Vector ResourceLoader::load_paths_stack; thread_local HashMap>> ResourceLoader::res_ref_overrides; diff --git a/core/io/resource_loader.h b/core/io/resource_loader.h index 5621bc8279..1e28e55343 100644 --- a/core/io/resource_loader.h +++ b/core/io/resource_loader.h @@ -207,6 +207,7 @@ private: static void _run_load_task(void *p_userdata); + static thread_local bool import_thread; static thread_local int load_nesting; static thread_local HashMap>> res_ref_overrides; // Outermost key is nesting level. static thread_local Vector load_paths_stack; @@ -256,6 +257,8 @@ public: static bool is_imported(const String &p_path); static int get_import_order(const String &p_path); + static void set_is_import_thread(bool p_import_thread); + static void set_timestamp_on_load(bool p_timestamp) { timestamp_on_load = p_timestamp; } static bool get_timestamp_on_load() { return timestamp_on_load; } diff --git a/core/io/resource_uid.cpp b/core/io/resource_uid.cpp index 26c1ae3ec6..329be73a8e 100644 --- a/core/io/resource_uid.cpp +++ b/core/io/resource_uid.cpp @@ -313,7 +313,7 @@ String ResourceUID::get_path_from_cache(Ref &p_cache_file, const Str ERR_FAIL_COND_V(rl != len, String()); if (singleton->id_to_text(id) == p_uid_string) { - return String(cs); + return String::utf8(cs.get_data()); } } return String(); diff --git a/core/object/worker_thread_pool.cpp b/core/object/worker_thread_pool.cpp index f51d2e156f..1c3a33813a 100644 --- a/core/object/worker_thread_pool.cpp +++ b/core/object/worker_thread_pool.cpp @@ -39,6 +39,8 @@ WorkerThreadPool::Task *const WorkerThreadPool::ThreadData::YIELDING = (Task *)1; +HashMap WorkerThreadPool::named_pools; + void WorkerThreadPool::Task::free_template_userdata() { ERR_FAIL_NULL(template_userdata); ERR_FAIL_NULL(native_func_userdata); @@ -186,25 +188,25 @@ void WorkerThreadPool::_thread_function(void *p_user) { while (true) { Task *task_to_process = nullptr; { - MutexLock lock(singleton->task_mutex); + MutexLock lock(thread_data->pool->task_mutex); - bool exit = singleton->_handle_runlevel(thread_data, lock); + bool exit = thread_data->pool->_handle_runlevel(thread_data, lock); if (unlikely(exit)) { break; } thread_data->signaled = false; - if (singleton->task_queue.first()) { - task_to_process = singleton->task_queue.first()->self(); - singleton->task_queue.remove(singleton->task_queue.first()); + if (thread_data->pool->task_queue.first()) { + task_to_process = thread_data->pool->task_queue.first()->self(); + thread_data->pool->task_queue.remove(thread_data->pool->task_queue.first()); } else { thread_data->cond_var.wait(lock); } } if (task_to_process) { - singleton->_process_task(task_to_process); + thread_data->pool->_process_task(task_to_process); } } } @@ -499,7 +501,7 @@ void WorkerThreadPool::_wait_collaboratively(ThreadData *p_caller_pool_thread, T } } - if (singleton->task_queue.first()) { + if (p_caller_pool_thread->pool->task_queue.first()) { task_to_process = task_queue.first()->self(); task_queue.remove(task_queue.first()); } @@ -507,7 +509,9 @@ void WorkerThreadPool::_wait_collaboratively(ThreadData *p_caller_pool_thread, T if (!task_to_process) { p_caller_pool_thread->awaited_task = p_task; - _unlock_unlockable_mutexes(); + if (this == singleton) { + _unlock_unlockable_mutexes(); + } relock_unlockables = true; p_caller_pool_thread->cond_var.wait(lock); @@ -516,7 +520,7 @@ void WorkerThreadPool::_wait_collaboratively(ThreadData *p_caller_pool_thread, T } } - if (relock_unlockables) { + if (relock_unlockables && this == singleton) { _lock_unlockable_mutexes(); } @@ -692,9 +696,13 @@ void WorkerThreadPool::wait_for_group_task_completion(GroupID p_group) { { Group *group = *groupp; - _unlock_unlockable_mutexes(); + if (this == singleton) { + _unlock_unlockable_mutexes(); + } group->done_semaphore.wait(); - _lock_unlockable_mutexes(); + if (this == singleton) { + _lock_unlockable_mutexes(); + } uint32_t max_users = group->tasks_used + 1; // Add 1 because the thread waiting for it is also user. Read before to avoid another thread freeing task after increment. uint32_t finished_users = group->finished.increment(); // fetch happens before inc, so increment later. @@ -711,15 +719,15 @@ void WorkerThreadPool::wait_for_group_task_completion(GroupID p_group) { #endif } -int WorkerThreadPool::get_thread_index() { +int WorkerThreadPool::get_thread_index() const { Thread::ID tid = Thread::get_caller_id(); - return singleton->thread_ids.has(tid) ? singleton->thread_ids[tid] : -1; + return thread_ids.has(tid) ? thread_ids[tid] : -1; } -WorkerThreadPool::TaskID WorkerThreadPool::get_caller_task_id() { +WorkerThreadPool::TaskID WorkerThreadPool::get_caller_task_id() const { int th_index = get_thread_index(); - if (th_index != -1 && singleton->threads[th_index].current_task) { - return singleton->threads[th_index].current_task->self; + if (th_index != -1 && threads[th_index].current_task) { + return threads[th_index].current_task->self; } else { return INVALID_TASK_ID; } @@ -768,6 +776,7 @@ void WorkerThreadPool::init(int p_thread_count, float p_low_priority_task_ratio) for (uint32_t i = 0; i < threads.size(); i++) { threads[i].index = i; + threads[i].pool = this; threads[i].thread.start(&WorkerThreadPool::_thread_function, &threads[i]); thread_ids.insert(threads[i].thread.get_id(), i); } @@ -834,10 +843,33 @@ void WorkerThreadPool::_bind_methods() { ClassDB::bind_method(D_METHOD("wait_for_group_task_completion", "group_id"), &WorkerThreadPool::wait_for_group_task_completion); } -WorkerThreadPool::WorkerThreadPool() { - singleton = this; +WorkerThreadPool *WorkerThreadPool::get_named_pool(const StringName &p_name) { + WorkerThreadPool **pool_ptr = named_pools.getptr(p_name); + if (pool_ptr) { + return *pool_ptr; + } else { + WorkerThreadPool *pool = memnew(WorkerThreadPool(false)); + pool->init(); + named_pools[p_name] = pool; + return pool; + } +} + +WorkerThreadPool::WorkerThreadPool(bool p_singleton) { + if (p_singleton) { + singleton = this; + } } WorkerThreadPool::~WorkerThreadPool() { finish(); + + if (this == singleton) { + singleton = nullptr; + for (KeyValue &E : named_pools) { + E.value->finish(); + memdelete(E.value); + } + named_pools.clear(); + } } diff --git a/core/object/worker_thread_pool.h b/core/object/worker_thread_pool.h index 0f712c1f59..8985a2a0c5 100644 --- a/core/object/worker_thread_pool.h +++ b/core/object/worker_thread_pool.h @@ -121,6 +121,7 @@ private: Task *current_task = nullptr; Task *awaited_task = nullptr; // Null if not awaiting the condition variable, or special value (YIELDING). ConditionVariable cond_var; + WorkerThreadPool *pool = nullptr; ThreadData() : signaled(false), @@ -168,6 +169,8 @@ private: uint64_t last_task = 1; + static HashMap named_pools; + static void _thread_function(void *p_user); void _process_task(Task *task); @@ -268,9 +271,12 @@ public: #endif } + // Note: Do not use this unless you know what you are doing, and it is absolutely necessary. Main thread pool (`get_singleton()`) should be preferred instead. + static WorkerThreadPool *get_named_pool(const StringName &p_name); + static WorkerThreadPool *get_singleton() { return singleton; } - static int get_thread_index(); - static TaskID get_caller_task_id(); + int get_thread_index() const; + TaskID get_caller_task_id() const; #ifdef THREADS_ENABLED _ALWAYS_INLINE_ static uint32_t thread_enter_unlock_allowance_zone(const MutexLock &p_lock) { return _thread_enter_unlock_allowance_zone(p_lock._get_lock()); } @@ -287,7 +293,7 @@ public: void init(int p_thread_count = -1, float p_low_priority_task_ratio = 0.3); void exit_languages_threads(); void finish(); - WorkerThreadPool(); + WorkerThreadPool(bool p_singleton = true); ~WorkerThreadPool(); }; diff --git a/core/os/os.h b/core/os/os.h index 625ee174a2..6a892736cf 100644 --- a/core/os/os.h +++ b/core/os/os.h @@ -364,9 +364,9 @@ public: // This is invoked by the GDExtensionManager after loading GDExtensions specified by the project. virtual void load_platform_gdextensions() const {} - // Windows only. Tests OpenGL context and Rendering Device simultaneous creation. This function is expected to crash on some NVIDIA drivers. - virtual bool _test_create_rendering_device_and_gl() const { return true; } - virtual bool _test_create_rendering_device() const { return true; } + // Tests OpenGL context and Rendering Device simultaneous creation. This function is expected to crash on some NVIDIA drivers. + virtual bool _test_create_rendering_device_and_gl(const String &p_display_driver) const { return true; } + virtual bool _test_create_rendering_device(const String &p_display_driver) const { return true; } OS(); virtual ~OS(); diff --git a/core/register_core_types.cpp b/core/register_core_types.cpp index b439aebdcf..e7986c92ff 100644 --- a/core/register_core_types.cpp +++ b/core/register_core_types.cpp @@ -47,6 +47,7 @@ #include "core/io/config_file.h" #include "core/io/dir_access.h" #include "core/io/dtls_server.h" +#include "core/io/file_access_encrypted.h" #include "core/io/http_client.h" #include "core/io/image_loader.h" #include "core/io/json.h" @@ -457,5 +458,7 @@ void unregister_core_types() { CoreStringNames::free(); StringName::cleanup(); + FileAccessEncrypted::deinitialize(); + OS::get_singleton()->benchmark_end_measure("Core", "Unregister Types"); } diff --git a/core/templates/cowdata.h b/core/templates/cowdata.h index eeb6eae4e9..b50e9ec5c0 100644 --- a/core/templates/cowdata.h +++ b/core/templates/cowdata.h @@ -438,20 +438,19 @@ Error CowData::_realloc(Size p_alloc_size) { template typename CowData::Size CowData::find(const T &p_val, Size p_from) const { - Size ret = -1; - - if (p_from < 0 || size() == 0) { - return ret; + if (p_from < 0) { + return -1; } - for (Size i = p_from; i < size(); i++) { - if (get(i) == p_val) { - ret = i; - break; + const Size s = size(); + + for (Size i = p_from; i < s; i++) { + if (_ptr[i] == p_val) { + return i; } } - return ret; + return -1; } template @@ -466,7 +465,7 @@ typename CowData::Size CowData::rfind(const T &p_val, Size p_from) const { } for (Size i = p_from; i >= 0; i--) { - if (get(i) == p_val) { + if (_ptr[i] == p_val) { return i; } } @@ -476,8 +475,9 @@ typename CowData::Size CowData::rfind(const T &p_val, Size p_from) const { template typename CowData::Size CowData::count(const T &p_val) const { Size amount = 0; - for (Size i = 0; i < size(); i++) { - if (get(i) == p_val) { + const Size s = size(); + for (Size i = 0; i < s; i++) { + if (_ptr[i] == p_val) { amount++; } } diff --git a/core/variant/callable.cpp b/core/variant/callable.cpp index ce51af0eb3..bb18ef806b 100644 --- a/core/variant/callable.cpp +++ b/core/variant/callable.cpp @@ -190,7 +190,7 @@ int Callable::get_argument_count(bool *r_is_valid) const { if (is_custom()) { bool valid = false; return custom->get_argument_count(r_is_valid ? *r_is_valid : valid); - } else if (!is_null()) { + } else if (is_valid()) { return get_object()->get_method_argument_count(method, r_is_valid); } else { if (r_is_valid) { diff --git a/doc/classes/EditorInspector.xml b/doc/classes/EditorInspector.xml index 644cbe5b58..0bbd55f007 100644 --- a/doc/classes/EditorInspector.xml +++ b/doc/classes/EditorInspector.xml @@ -51,6 +51,7 @@ + diff --git a/doc/classes/JavaClassWrapper.xml b/doc/classes/JavaClassWrapper.xml index 8f41a0791f..1cd55468f3 100644 --- a/doc/classes/JavaClassWrapper.xml +++ b/doc/classes/JavaClassWrapper.xml @@ -32,6 +32,7 @@ Wraps a class defined in Java, and returns it as a [JavaClass] [Object] type that Redot can interact with. + When wrapping inner (nested) classes, use [code]$[/code] instead of [code].[/code] to separate them. For example, [code]JavaClassWrapper.wrap("android.view.WindowManager$LayoutParams")[/code] wraps the [b]WindowManager.LayoutParams[/b] class. [b]Note:[/b] This method only works on Android. On every other platform, this method does nothing and returns an empty [JavaClass]. diff --git a/doc/classes/LineEdit.xml b/doc/classes/LineEdit.xml index c6cdacb6ec..879b179dbf 100644 --- a/doc/classes/LineEdit.xml +++ b/doc/classes/LineEdit.xml @@ -252,7 +252,7 @@ The caret's column position inside the [LineEdit]. When set, the text may scroll to accommodate it. - If [code]true[/code], the [LineEdit] will always show the caret, even if focus is lost. + If [code]true[/code], the [LineEdit] will always show the caret, even if not editing or focus is lost. Allow moving caret, selecting and removing the individual composite character components. diff --git a/doc/classes/NativeMenu.xml b/doc/classes/NativeMenu.xml index 6081d7afc5..5eaec56e7e 100644 --- a/doc/classes/NativeMenu.xml +++ b/doc/classes/NativeMenu.xml @@ -374,7 +374,7 @@ Returns global menu open callback. - b]Note:[/b] This method is implemented only on macOS. + [b]Note:[/b] This method is implemented only on macOS. diff --git a/doc/classes/Node.xml b/doc/classes/Node.xml index 45c9962cd9..32d63bab49 100644 --- a/doc/classes/Node.xml +++ b/doc/classes/Node.xml @@ -1250,6 +1250,9 @@ Notification received when the mouse cursor leaves the [Viewport]'s visible area, that is not occluded behind other [Control]s or [Window]s, provided its [member Viewport.gui_disable_input] is [code]false[/code] and regardless if it's currently focused or not. + + Notification received when the window is moved. + Notification received from the OS when the application is exceeding its allocated memory. Implemented only on iOS. diff --git a/doc/classes/RDTextureView.xml b/doc/classes/RDTextureView.xml index bd8102d553..2e03ee44aa 100644 --- a/doc/classes/RDTextureView.xml +++ b/doc/classes/RDTextureView.xml @@ -9,7 +9,7 @@ - + Optional override for the data format to return sampled values in. The corresponding [RDTextureFormat] must have had this added as a shareable format. The default value of [constant RenderingDevice.DATA_FORMAT_MAX] does not override the format. diff --git a/doc/classes/RDVertexAttribute.xml b/doc/classes/RDVertexAttribute.xml index 364b82526b..04e4bb53a0 100644 --- a/doc/classes/RDVertexAttribute.xml +++ b/doc/classes/RDVertexAttribute.xml @@ -9,7 +9,7 @@ - + The way that this attribute's data is interpreted when sent to a shader. diff --git a/doc/classes/RenderingDevice.xml b/doc/classes/RenderingDevice.xml index 34cd8fe992..8a054ba668 100644 --- a/doc/classes/RenderingDevice.xml +++ b/doc/classes/RenderingDevice.xml @@ -1871,7 +1871,35 @@ 16-bit-per-channel unsigned floating-point green/blue/red channel data with normalized value, plus 6 unused bits after each channel. Stored across 3 separate planes (green + blue + red). Values are in the [code][0.0, 1.0][/code] range. - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Represents the size of the [enum DataFormat] enum. diff --git a/doc/classes/XRCamera3D.xml b/doc/classes/XRCamera3D.xml index e49e884f33..ca1cd431f6 100644 --- a/doc/classes/XRCamera3D.xml +++ b/doc/classes/XRCamera3D.xml @@ -10,4 +10,7 @@ $DOCS_URL/tutorials/xr/index.html + + + diff --git a/doc/classes/XRNode3D.xml b/doc/classes/XRNode3D.xml index f6a1d88bcd..43564455fe 100644 --- a/doc/classes/XRNode3D.xml +++ b/doc/classes/XRNode3D.xml @@ -46,6 +46,7 @@ + The name of the pose we're bound to. Which poses a tracker supports is not known during design time. Redot defines number of standard pose names such as [code]aim[/code] and [code]grip[/code] but other may be configured within a given [XRInterface]. diff --git a/doc/translations/de.po b/doc/translations/de.po index f6e4543062..27157ff6ad 100644 --- a/doc/translations/de.po +++ b/doc/translations/de.po @@ -103,12 +103,13 @@ # Daniel Schmid , 2025. # Michael Domanek , 2025. # Keschler , 2025. +# Silikonmanns Kanal , 2025. msgid "" msgstr "" "Project-Id-Version: Godot Engine class reference\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" -"PO-Revision-Date: 2025-02-26 15:06+0000\n" -"Last-Translator: Keschler \n" +"PO-Revision-Date: 2025-03-10 14:33+0000\n" +"Last-Translator: Silikonmann \n" "Language-Team: German \n" "Language: de\n" @@ -116,7 +117,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.10.2-dev\n" +"X-Generator: Weblate 5.10.3-dev\n" msgid "All classes" msgstr "Alle Klassen" @@ -13723,6 +13724,9 @@ msgstr "" "globalen Raum und nicht im lokalen Objektraum berechnet. Siehe auch [member " "uv2_triplanar]." +msgid "Using 3D transforms" +msgstr "3D-Transformationen verwenden" + msgid "" "Returns [code]true[/code] if this basis and [param b] are approximately " "equal, by calling [method @GlobalScope.is_equal_approx] on all vector " diff --git a/doc/translations/es.po b/doc/translations/es.po index 27b8d3b876..04bd4f8752 100644 --- a/doc/translations/es.po +++ b/doc/translations/es.po @@ -5,7 +5,7 @@ # # 44pes Games <44pes.games@gmail.com>, 2020. # Megamega53 , 2020, 2021. -# Javier Ocampos , 2020, 2021, 2022, 2023. +# Javier Ocampos , 2020, 2021, 2022, 2023, 2025. # Serk Lintur , 2020. # Lambientan , 2020. # paco , 2020, 2021. @@ -84,7 +84,7 @@ # Zgtale , 2024. # Juan Matias Olmos , 2024. # Juan Castro , 2024. -# Alejandro Moctezuma , 2024. +# Alejandro Moctezuma , 2024, 2025. # gallegonovato , 2024. # Andres David Calderon , 2024. # MayorTom4815 , 2024. @@ -99,8 +99,8 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine class reference\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" -"PO-Revision-Date: 2025-03-02 21:09+0000\n" -"Last-Translator: LuisGFlorez \n" +"PO-Revision-Date: 2025-03-20 03:49+0000\n" +"Last-Translator: Javier \n" "Language-Team: Spanish \n" "Language: es\n" @@ -108,7 +108,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.10.3-dev\n" +"X-Generator: Weblate 5.11-dev\n" msgid "All classes" msgstr "Todas las clases" @@ -123,13 +123,13 @@ msgid "Resources" msgstr "Recursos" msgid "Editor-only" -msgstr "Solo Editor" +msgstr "Solo para el Editor" msgid "Other objects" msgstr "Otros objetos" msgid "Variant types" -msgstr "Tipos de variantes" +msgstr "Tipos de Variant" msgid "Description" msgstr "Descripción" @@ -168,13 +168,13 @@ msgid "Property Descriptions" msgstr "Descripciones de Propiedades" msgid "Constructor Descriptions" -msgstr "Descripciones de Constructor" +msgstr "Descripciones de Constructores" msgid "Method Descriptions" msgstr "Descripciones de Métodos" msgid "Operator Descriptions" -msgstr "Descripciones de Operador" +msgstr "Descripciones de Operadores" msgid "Theme Property Descriptions" msgstr "Descripciones de las propiedades del tema" @@ -353,9 +353,23 @@ msgstr "" msgid "Built-in GDScript constants, functions, and annotations." msgstr "Constantes, funciones y anotaciones de GDScript integradas." +msgid "" +"A list of utility functions and annotations accessible from any script " +"written in GDScript.\n" +"For the list of global functions and constants that can be accessed in any " +"scripting language, see [@GlobalScope]." +msgstr "" +"Una lista de funciones de utilidad y anotaciones específicas de GDScript, " +"accesibles desde cualquier script escrito en GDScript.\n" +"Para obtener la lista de funciones globales y constantes a las que se puede " +"acceder desde cualquier lenguaje de scripting, consulte [@GlobalScope]." + msgid "GDScript exports" msgstr "Exportaciones de GDScript" +msgid "Use [method Color.from_rgba8] instead." +msgstr "Usar [method Color.from_rgba8] en su lugar." + msgid "" "Returns a [Color] constructed from red ([param r8]), green ([param g8]), blue " "([param b8]), and optionally alpha ([param a8]) integer channels, each " @@ -415,33 +429,50 @@ msgid "" "[b]Note:[/b] [method assert] is a keyword, not a function. So you cannot " "access it as a [Callable] or use it inside expressions." msgstr "" -"Afirma que [param condition] es [code]true[/code]. Si [param condition]es " -"[code]false[/code], se genera un error. Cuando se ejecuta desde el editor, el " -"proyecto en ejecución también se pausará hasta que lo reanude. Esto se puede " -"utilizar como una forma más fuerte de [method @GlobalScope.push_error] para " -"informar de errores a los desarrolladores del proyecto o a los usuarios de la " -"extensión.\n" -"Se puede mostrar un [param message] opcional además del mensaje genérico " -"\"Assertion failed\". Puede utilizarlo para proporcionar detalles adicionales " -"sobre por qué falló la aserción.\n" +"Verifica que la [param condition] sea [code]true[/code]. Si la [param " +"condition] es [code]false[/code], se genera un error. Al ejecutar desde el " +"editor, el proyecto en ejecución también se pausará hasta que lo reanudes. " +"Esto puede usarse como una forma más estricta de [method @GlobalScope." +"push_error] para reportar errores a los desarrolladores del proyecto o a los " +"usuarios de complementos.\n" +"Un mensaje opcional [param message] puede mostrarse además del mensaje " +"genérico \"Assertion failed\". Puedes usar esto para proporcionar detalles " +"adicionales sobre por qué falló la aserción.\n" "[b]Advertencia:[/b] Por razones de rendimiento, el código dentro de [method " -"assert] sólo se ejecuta en compilaciones de depuración o cuando se ejecuta el " -"proyecto desde el editor. No incluya código que tenga efectos secundarios en " -"una llamada a [method assert]. De lo contrario, el proyecto se comportará de " -"forma diferente cuando se exporte en modo release.\n" +"assert] solo se ejecuta en versiones de depuración o al ejecutar el proyecto " +"desde el editor. No incluyas código con efectos secundarios en una llamada a " +"[method assert]. De lo contrario, el proyecto se comportará de manera " +"diferente cuando se exporte en modo de lanzamiento.\n" "[codeblock]\n" -"# Imagina que siempre queremos que la velocidad esté entre 0 y 20.\n" +"Imagina que siempre queremos que la velocidad esté entre 0 y 20.\n" "var speed = -10\n" "assert(speed < 20) # Verdadero, el programa continuará.\n" "assert(speed >= 0) # Falso, el programa se detendrá.\n" "assert(speed >= 0 and speed < 20) # También puedes combinar las dos " -"sentencias condicionales en una sola comprobación.\n" +"condiciones en una sola verificación.\n" "assert(speed < 20, \"el límite de velocidad es 20\") # Muestra un mensaje.\n" "[/codeblock]\n" "[b]Nota:[/b] [method assert] es una palabra clave, no una función. Por lo " -"tanto, no puede acceder a él como un [Callable] ni usarlo dentro de " +"tanto, no puedes acceder a ella como un [Callable] ni usarla dentro de " "expresiones." +msgid "" +"Returns a single character (as a [String]) of the given Unicode code point " +"(which is compatible with ASCII code).\n" +"[codeblock]\n" +"var upper = char(65) # upper is \"A\"\n" +"var lower = char(65 + 32) # lower is \"a\"\n" +"var euro = char(8364) # euro is \"€\"\n" +"[/codeblock]" +msgstr "" +"Devuelve un único carácter (como un [String]) del punto de código Unicode " +"indicado (que es compatible con el código ASCII).\n" +"[codeblock]\n" +"var superior = char(65) # superior es \"A\"\n" +"var inferior = char(65 + 32) # inferior es \"a\"\n" +"var euro = char(8364) # euro es \"€\"\n" +"[/codeblock]" + msgid "Use [method @GlobalScope.type_convert] instead." msgstr "Utiliza el [método @GlobalScope.type_convert] en su lugar." @@ -457,18 +488,24 @@ msgid "" "print(b is Array) # Prints false\n" "[/codeblock]" msgstr "" -"[i]obsoleto.[/i] Usar [method @GlobalScope.type_convert] en su lugar.\n" "Convierte [param what] a [param type] de la mejor forma posible. El [param " -"type] usa los valores de[enum Variant.Type].\n" +"type] usa los valores de [enum Variant.Type].\n" "[codeblock]\n" "var a = [4, 2.5, 1.2]\n" "print(a is Array) # Imprime true\n" "\n" "var b = convert(a, TYPE_PACKED_BYTE_ARRAY)\n" -"print(b)• • • • • • • • # Prints [4, 2, 1]\n" +"print(b) # Imprime [4, 2, 1]\n" "print(b is Array) # Imprime false\n" "[/codeblock]" +msgid "" +"Consider using [method JSON.to_native] or [method Object.get_property_list] " +"instead." +msgstr "" +"Considere usar [method JSON.to_native] o [method Object.get_property_list] en " +"su lugar." + msgid "" "Converts a [param dictionary] (created with [method inst_to_dict]) back to an " "Object instance. Can be useful for deserializing." @@ -526,6 +563,134 @@ msgstr "" "[b]Nota:[/b] La llamada a esta función desde un [Thread] no está soportada. " "Si lo hace, devolverá un array vacío." +msgid "" +"Consider using [method JSON.from_native] or [method Object.get_property_list] " +"instead." +msgstr "" +"Considere usar [method JSON.from_native] o [method Object.get_property_list] " +"en su lugar." + +msgid "" +"Returns the passed [param instance] converted to a Dictionary. Can be useful " +"for serializing.\n" +"[codeblock]\n" +"var foo = \"bar\"\n" +"func _ready():\n" +" var d = inst_to_dict(self)\n" +" print(d.keys())\n" +" print(d.values())\n" +"[/codeblock]\n" +"Prints out:\n" +"[codeblock lang=text]\n" +"[@subpath, @path, foo]\n" +"[, res://test.gd, bar]\n" +"[/codeblock]\n" +"[b]Note:[/b] This function can only be used to serialize objects with an " +"attached [GDScript] stored in a separate file. Objects without an attached " +"script, with a script written in another language, or with a built-in script " +"are not supported.\n" +"[b]Note:[/b] This function is not recursive, which means that nested objects " +"will not be represented as dictionaries. Also, properties passed by reference " +"([Object], [Dictionary], [Array], and packed arrays) are copied by reference, " +"not duplicated." +msgstr "" +"Convierte la [param instance] pasada en un Dictionary. Puede ser útil para " +"serializar.\n" +"[codeblock]\n" +"var foo = \"bar\"\n" +"func _ready():\n" +" var d = inst_to_dict(self)\n" +" print(d.keys())\n" +" print(d.values())\n" +"[/codeblock]\n" +"Imprime:\n" +"[codeblock lang=text]\n" +"[@subpath, @path, foo]\n" +"[, res://test.gd, bar]\n" +"[/codeblock]\n" +"[b]Nota:[/b] Esta función solo puede usarse para serializar objetos con un " +"[GDScript] adjunto almacenado en un archivo separado. No se admiten objetos " +"sin un script adjunto, con un script escrito en otro lenguaje o con un script " +"integrado.\n" +"[b]Nota:[/b] Esta función no es recursiva, lo que significa que los objetos " +"anidados no se representarán como diccionarios. Además, las propiedades " +"pasadas por referencia ([Object], [Dictionary], [Array] y arrays " +"empaquetados) se copian por referencia, no se duplican." + +msgid "" +"Returns [code]true[/code] if [param value] is an instance of [param type]. " +"The [param type] value must be one of the following:\n" +"- A constant from the [enum Variant.Type] enumeration, for example [constant " +"TYPE_INT].\n" +"- An [Object]-derived class which exists in [ClassDB], for example [Node].\n" +"- A [Script] (you can use any class, including inner one).\n" +"Unlike the right operand of the [code]is[/code] operator, [param type] can be " +"a non-constant value. The [code]is[/code] operator supports more features " +"(such as typed arrays). Use the operator instead of this method if you do not " +"need dynamic type checking.\n" +"[b]Examples:[/b]\n" +"[codeblock]\n" +"print(is_instance_of(a, TYPE_INT))\n" +"print(is_instance_of(a, Node))\n" +"print(is_instance_of(a, MyClass))\n" +"print(is_instance_of(a, MyClass.InnerClass))\n" +"[/codeblock]\n" +"[b]Note:[/b] If [param value] and/or [param type] are freed objects (see " +"[method @GlobalScope.is_instance_valid]), or [param type] is not one of the " +"above options, this method will raise a runtime error.\n" +"See also [method @GlobalScope.typeof], [method type_exists], [method Array." +"is_same_typed] (and other [Array] methods)." +msgstr "" +"Devuelve [code]true[/code] si [param value] es una instancia de [param type]. " +"El valor de [param type] debe ser uno de los siguientes:\n" +"- Una constante de la enumeración [enum Variant.Type], por ejemplo [constant " +"TYPE_INT].\n" +"- Una clase derivada de [Object] que exista en [ClassDB], por ejemplo " +"[Node].\n" +"- Un [Script] (puedes usar cualquier clase, incluidas las internas).\n" +"A diferencia del operando derecho del operador [code]is[/code], [param type] " +"puede ser un valor no constante. El operador [code]is[/code] admite más " +"características (como arrays tipados). Usa el operador en lugar de este " +"método si no necesitas comprobación dinámica de tipos.\n" +"[b]Ejemplos:[/b]\n" +"[codeblock]\n" +"print(is_instance_of(a, TYPE_INT))\n" +"print(is_instance_of(a, Node))\n" +"print(is_instance_of(a, MyClass))\n" +"print(is_instance_of(a, MyClass.InnerClass))\n" +"[/codeblock]\n" +"[b]Nota:[/b] Si [param value] y/o [param type] son objetos liberados (ver " +"[method @GlobalScope.is_instance_valid]), o [param type] no es una de las " +"opciones anteriores, este método generará un error en tiempo de ejecución.\n" +"Ver también [method @GlobalScope.typeof], [method type_exists], [method Array." +"is_same_typed] (y otros métodos de [Array])." + +msgid "" +"Returns the length of the given Variant [param var]. The length can be the " +"character count of a [String] or [StringName], the element count of any array " +"type, or the size of a [Dictionary]. For every other Variant type, a run-time " +"error is generated and execution is stopped.\n" +"[codeblock]\n" +"var a = [1, 2, 3, 4]\n" +"len(a) # Returns 4\n" +"\n" +"var b = \"Hello!\"\n" +"len(b) # Returns 6\n" +"[/codeblock]" +msgstr "" +"Devuelve la longitud del [param var] Variant dado. La longitud puede ser el " +"recuento de caracteres de un [String] o [StringName], el recuento de " +"elementos de cualquier tipo de array, o el tamaño de un [Dictionary]. Para " +"cualquier otro tipo de Variant, se genera un error en tiempo de ejecución y " +"se detiene la ejecución.\n" +"[codeblock]\n" +"var a = [1, 2, 3, 4]\n" +"len(a) # Devuelve 4\n" +"\n" +"var b = \"¡Hola!\"\n" +"len(b) # Devuelve 6\n" +"[/codeblock]" + msgid "" "Returns a [Resource] from the filesystem located at the absolute [param " "path]. Unless it's already referenced elsewhere (such as in another script or " @@ -560,17 +725,17 @@ msgid "" "ProjectSettings.editor/export/convert_text_resources_to_binary] to " "[code]false[/code]." msgstr "" -"Carga un [Resource] del sistema de archivos ubicado en la ruta absoluta " -"[param path]. El recurso es cargado en la llamada al método (a menos que ya " -"esté referenciado en otro lugar, por ejemplo, en otro script o en la escena), " -"lo que puede causar un ligero retraso, especialmente al cargar escenas " -"grandes. Para evitar retrasos innecesarios al cargar algo varias veces, " -"almacena el recurso en una variable o utiliza precarga [method preload]. Este " +"Devuelve un [Resource] del sistema de archivos ubicado en la ruta absoluta " +"[param path]. A menos que ya esté referenciado en otro lugar (como en otro " +"script o en la escena), el recurso se carga desde el disco en la llamada a la " +"función, lo que podría causar un ligero retraso, especialmente al cargar " +"escenas grandes. Para evitar retrasos innecesarios al cargar algo varias " +"veces, almacena el recurso en una variable o usa [method preload]. Este " "método es equivalente a usar [method ResourceLoader.load] con [constant " "ResourceLoader.CACHE_MODE_REUSE].\n" -"[b]Nota:[/b] Las rutas de los recursos pueden obtenerse haciendo clic derecho " -"sobre un recurso en el panel FileSystem y eligiendo \"Copiar Ruta\" o " -"arrastrando el archivo desde el panel FileSystem al script.\n" +"[b]Nota:[/b] Las rutas de los recursos se pueden obtener haciendo clic " +"derecho sobre un recurso en el panel FileSystem y eligiendo \"Copiar ruta\", " +"o arrastrando el archivo desde el panel FileSystem al script actual.\n" "[codeblock]\n" "# Carga una escena llamada \"main\" ubicada en la raíz del directorio del " "proyecto y la almacena en una variable.\n" @@ -578,19 +743,19 @@ msgstr "" "PackedScene.\n" "[/codeblock]\n" "[b]Importante:[/b] Las rutas relativas [i]no[/i] son relativas al script que " -"llama a este método, sino que se anteponen con [code]\"res://\"[/code]. La " -"carga desde rutas relativas podría no funcionar como se espera. Este método " -"es una versión simplificada de [method ResourceLoader.load], el cual puede " -"ser usado en escenarios más avanzados.\n" -"[b]Nota:[/b] Los archivos se deben importar primero al motor para cargarlos " -"utilizando esta función. Si desea cargar [Image]s en tiempo de ejecución, " -"puede utilizar [method Image.load]. Si desea importar archivos de audio, " -"puede utilizar el snippet descrito en [member AudioStreamMP3.data].\n" +"llama a este método, sino que están prefijadas con [code]\"res://\"[/code]. " +"Cargar desde rutas relativas puede no funcionar como se espera.\n" +"Esta función es una versión simplificada de [method ResourceLoader.load], que " +"puede usarse para escenarios más avanzados.\n" +"[b]Nota:[/b] Los archivos deben importarse primero en el motor para poder " +"cargarlos usando esta función. Si deseas cargar [Image]s en tiempo de " +"ejecución, puedes usar [method Image.load]. Si deseas importar archivos de " +"audio, puedes usar el fragmento descrito en [member AudioStreamMP3.data].\n" "[b]Nota:[/b] Si [member ProjectSettings.editor/export/" -"convert_text_resources_to_binary] es [code]true[/code], [method @GDScript." -"load] no podrá leer los archivos convertidos en un proyecto exportado. Si " -"depende de la carga en tiempo de ejecución de los archivos presentes en el " -"PCK, configure [member ProjectSettings.editor/export/" +"convert_text_resources_to_binary] está configurado como [code]true[/code], " +"[method @GDScript.load] no podrá leer los archivos convertidos en un proyecto " +"exportado. Si dependes de la carga en tiempo de ejecución de archivos " +"presentes dentro del PCK, configura [member ProjectSettings.editor/export/" "convert_text_resources_to_binary] como [code]false[/code]." msgid "" @@ -636,15 +801,15 @@ msgid "" "[b]Note:[/b] Calling this function from a [Thread] is not supported. Doing so " "will instead print the thread ID." msgstr "" -"Igual a [method @GlobalScope.print], pero incluye el frame de pila actual " -"cuando se ejecuta con el depurador activado.\n" -"La salida en la consola puede verse de la siguiente forma:\n" +"Al igual que [method @GlobalScope.print], pero incluye el marco de pila " +"actual cuando se ejecuta con el depurador activado.\n" +"La salida en la consola puede verse así:\n" "[codeblock lang=text]\n" -"Impresión de prueba\n" +"Test print\n" "At: res://test.gd:15:_process()\n" "[/codeblock]\n" -"[b]Nota:[/b] No se soporta la llamada a esta función desde un [Thread]. Si lo " -"hace, se imprimirá el ID del hilo." +"[b]Nota:[/b] Llamar a esta función desde un [Thread] no está soportado. " +"Hacerlo imprimirá en su lugar el ID del hilo." msgid "" "Prints a stack trace at the current code location. See also [method " @@ -716,15 +881,16 @@ msgid "" "[code]0[/code] will not result in [constant INF] and will result in a run-" "time error instead." msgstr "" -"Infinito como número de punto flotante. Este es el resultado de una división " -"de punto flotante cuando el divisor es [code]0.0[/code]. Para el infinito " -"negativo, utilizar [code]-INF[/code]. Dividir por [code]-0.0[/code] otorgará " -"como resultado el infinito negativo si el numerador es positivo, de manera " -"que no es lo mismo que dividir por [code]0.0[/code] (a pesar de que [code]0.0 " -"== -0.0[/code] devuelve [code]true[/code]). [b]Nota:[/b] El infinito numérico " -"solo es un concepto para números de punto flotante y no tiene un equivalente " -"para enteros. La división de un entero por [code]0[/code] no resultará en " -"[constant INF] y en su lugar arrojará un error en tiempo de ejecución." +"Infinito positivo de punto flotante. Este es el resultado de la división de " +"punto flotante cuando el divisor es [code]0.0[/code]. Para infinito negativo, " +"usa [code]-INF[/code]. Dividir por [code]-0.0[/code] resultará en infinito " +"negativo si el numerador es positivo, por lo que dividir por [code]0.0[/code] " +"no es lo mismo que dividir por [code]-0.0[/code] (a pesar de que [code]0.0 == " +"-0.0[/code] devuelve [code]true[/code]).\n" +"[b]Advertencia:[/b] El infinito numérico es solo un concepto aplicable a los " +"números de punto flotante y no tiene equivalente para los enteros. Dividir un " +"número entero entre [code]0[/code] no resultará en [constant INF] y causará " +"un error en tiempo de ejecución en su lugar." msgid "" "\"Not a Number\", an invalid floating-point value. [constant NAN] has special " @@ -739,15 +905,97 @@ msgid "" "code] by [code]0[/code] will not result in [constant NAN] and will result in " "a run-time error instead." msgstr "" -"\"Not a Number\" (\"No es un Número/NaN\"), un decimal de valor inválido. " -"[constant NAN] tiene propiedades especiales, incluyendo que no es igual a si " -"mismo([code]NAN==NAN[/code] devuelve [code]false[/code]). Es una salida dada " -"por algunas operaciones inválidas, como dividir un decimal [code]0.0[/code] " -"por [code]0.0[/code].\n" -"[b]Nota:[/b] \"Not a Number\" es solo un concepto con números decimales, y no " -"tiene un equivalente para enteros. Dividiendo un entero por [code]0[/code] no " -"resultará en [constante NAN] y en su lugar arrojará un error en tiempo de " -"ejecución." +"\"No es un Número\", un valor de punto flotante inválido. [constant NAN] " +"tiene propiedades especiales, incluyendo que [code]!=[/code] siempre devuelve " +"[code]true[/code], mientras que los demás operadores de comparación siempre " +"devuelven [code]false[/code]. Esto es cierto incluso al compararlo consigo " +"mismo ([code]NAN == NAN[/code] devuelve [code]false[/code] y [code]NAN != " +"NAN[/code] devuelve [code]true[/code]). Es devuelto por algunas operaciones " +"inválidas, como dividir [code]0.0[/code] de punto flotante entre [code]0.0[/" +"code].\n" +"[b]Advertencia:[/b] \"No es un Número\" es solo un concepto aplicable a los " +"números de punto flotante y no tiene equivalente para los enteros. Dividir un " +"entero [code]0[/code] entre [code]0[/code] no resultará en [constant NAN] y " +"causará un error en tiempo de ejecución en su lugar." + +msgid "" +"Mark the following property as exported (editable in the Inspector dock and " +"saved to disk). To control the type of the exported property, use the type " +"hint notation.\n" +"[codeblock]\n" +"extends Node\n" +"\n" +"enum Direction {LEFT, RIGHT, UP, DOWN}\n" +"\n" +"# Built-in types.\n" +"@export var string = \"\"\n" +"@export var int_number = 5\n" +"@export var float_number: float = 5\n" +"\n" +"# Enums.\n" +"@export var type: Variant.Type\n" +"@export var format: Image.Format\n" +"@export var direction: Direction\n" +"\n" +"# Resources.\n" +"@export var image: Image\n" +"@export var custom_resource: CustomResource\n" +"\n" +"# Nodes.\n" +"@export var node: Node\n" +"@export var custom_node: CustomNode\n" +"\n" +"# Typed arrays.\n" +"@export var int_array: Array[int]\n" +"@export var direction_array: Array[Direction]\n" +"@export var image_array: Array[Image]\n" +"@export var node_array: Array[Node]\n" +"[/codeblock]\n" +"[b]Note:[/b] Custom resources and nodes should be registered as global " +"classes using [code]class_name[/code], since the Inspector currently only " +"supports global classes. Otherwise, a less specific type will be exported " +"instead.\n" +"[b]Note:[/b] Node export is only supported in [Node]-derived classes and has " +"a number of other limitations." +msgstr "" +"Marca la siguiente propiedad como exportada (editable en el panel Inspector y " +"guardada en disco). Para controlar el tipo de la propiedad exportada, utiliza " +"la notación de sugerencia de tipo.\n" +"[codeblock]\n" +"extends Node\n" +"\n" +"enum Direction {LEFT, RIGHT, UP, DOWN}\n" +"\n" +"# Tipos integrados.\n" +"@export var string = \"\"\n" +"@export var int_number = 5\n" +"@export var float_number: float = 5\n" +"\n" +"# Enumeraciones.\n" +"@export var type: Variant.Type\n" +"@export var format: Image.Format\n" +"@export var direction: Direction\n" +"\n" +"# Recursos.\n" +"@export var image: Image\n" +"@export var custom_resource: CustomResource\n" +"\n" +"# Nodos.\n" +"@export var node: Node\n" +"@export var custom_node: CustomNode\n" +"\n" +"# Arrays tipados.\n" +"@export var int_array: Array[int]\n" +"@export var direction_array: Array[Direction]\n" +"@export var image_array: Array[Image]\n" +"@export var node_array: Array[Node]\n" +"[/codeblock]\n" +"[b]Nota:[/b] Los recursos y nodos personalizados deben registrarse como " +"clases globales utilizando [code]class_name[/code], ya que el Inspector " +"actualmente solo admite clases globales. De lo contrario, se exportará un " +"tipo menos específico.\n" +"[b]Nota:[/b] La exportación de nodos solo está soportada en clases derivadas " +"de [Node] y tiene varias limitaciones adicionales." msgid "" "Define a new category for the following exported properties. This helps to " @@ -776,6 +1024,24 @@ msgstr "" "Sprite, etc) . Para una mejor claridad, se recomienda usar en su lugar " "[annotation @export_group] y [annotation @export_subgroup]." +msgid "" +"Export a [Color], [Array][lb][Color][rb], or [PackedColorArray] property " +"without allowing its transparency ([member Color.a]) to be edited.\n" +"See also [constant PROPERTY_HINT_COLOR_NO_ALPHA].\n" +"[codeblock]\n" +"@export_color_no_alpha var dye_color: Color\n" +"@export_color_no_alpha var dye_colors: Array[Color]\n" +"[/codeblock]" +msgstr "" +"Exporta una propiedad de tipo [Color], [Array][lb][Color][rb] o " +"[PackedColorArray] sin permitir que se edite su transparencia ([member Color." +"a]).\n" +"Ver también [constant PROPERTY_HINT_COLOR_NO_ALPHA].\n" +"[codeblock]\n" +"@export_color_no_alpha var dye_color: Color\n" +"@export_color_no_alpha var dye_colors: Array[Color]\n" +"[/codeblock]" + msgid "" "Allows you to set a custom hint, hint string, and usage flags for the " "exported property. Note that there's no validation done in GDScript, it will " @@ -798,6 +1064,28 @@ msgstr "" "el indicador [constant PROPERTY_USAGE_SCRIPT_VARIABLE], como ocurre con " "cualquier variable de script declarada explícitamente." +msgid "" +"Export a [String], [Array][lb][String][rb], or [PackedStringArray] property " +"as a path to a directory. The path will be limited to the project folder and " +"its subfolders. See [annotation @export_global_dir] to allow picking from the " +"entire filesystem.\n" +"See also [constant PROPERTY_HINT_DIR].\n" +"[codeblock]\n" +"@export_dir var sprite_folder_path: String\n" +"@export_dir var sprite_folder_paths: Array[String]\n" +"[/codeblock]" +msgstr "" +"Exporta una propiedad de tipo [String], [Array][lb][String][rb] o " +"[PackedStringArray] como una ruta hacia un directorio. La ruta estará " +"limitada a la carpeta del proyecto y sus subcarpetas. Ver [annotation " +"@export_global_dir] para permitir seleccionar desde todo el sistema de " +"archivos.\n" +"Ver también [constant PROPERTY_HINT_DIR].\n" +"[codeblock]\n" +"@export_dir var sprite_folder_path: String\n" +"@export_dir var sprite_folder_paths: Array[String]\n" +"[/codeblock]" + msgid "" "Export an integer property as a bit flag field for 3D physics layers. The " "widget in the Inspector dock will use the layer names defined in [member " @@ -1005,6 +1293,24 @@ msgstr "" "[url=https://en.wikipedia.org/wiki/B%C3%A9zier_curve]curva de Bézier [/url] " "definida dados los puntos [param control_1], [param control_2], y [param end]." +msgid "" +"Rounds [param x] upward (towards positive infinity), returning the smallest " +"whole number that is not less than [param x].\n" +"A type-safe version of [method ceil], returning a [float]." +msgstr "" +"Redondea [param x] hacia arriba (hacia el infinito positivo) y devuelve el " +"número entero más pequeño que no sea menor que [param x].\n" +"Una versión de [method ceil] con seguridad de tipos, que devuelve un [float]." + +msgid "" +"Rounds [param x] upward (towards positive infinity), returning the smallest " +"whole number that is not less than [param x].\n" +"A type-safe version of [method ceil], returning an [int]." +msgstr "" +"Redondea [param x] hacia arriba (hacia el infinito positivo) y devuelve el " +"número entero más pequeño que no sea menor que [param x].\n" +"Una versión de tipo seguro de [method ceil], que devuelve un [int]." + msgid "" "Clamps the [param value], returning a [Variant] not less than [param min] and " "not more than [param max]. Any values that can be compared with the less than " @@ -2145,6 +2451,9 @@ msgstr "Error recurso ocupado." msgid "Skip error." msgstr "Error de salto(Skip error)." +msgid "Represents the size of the [enum PropertyHint] enum." +msgstr "Representa el tamaño del enum [enum PropertyHint]." + msgid "Used to categorize properties together in the editor." msgstr "Se usa para categorizar las propiedades juntas en el editor." @@ -2861,6 +3170,24 @@ msgstr "La ruta al [AnimationPlayer] utilizada para la animacion." msgid "Using Area2D" msgstr "Usando Area2D" +msgid "" +"Returns a list of intersecting [PhysicsBody2D]s and [TileMap]s. The " +"overlapping body's [member CollisionObject2D.collision_layer] must be part of " +"this area's [member CollisionObject2D.collision_mask] in order to be " +"detected.\n" +"For performance reasons (collisions are all processed at the same time) this " +"list is modified once during the physics step, not immediately after objects " +"are moved. Consider using signals instead." +msgstr "" +"Devuelve una lista de [PhysicsBody2D] y [TileMap] que se intersecan. La capa " +"de colisión del cuerpo superpuesto ([member CollisionObject2D." +"collision_layer]) debe formar parte de la máscara de colisión de esta área " +"([member CollisionObject2D.collision_mask]) para poder ser detectado.\n" +"Por razones de rendimiento (todas las colisiones se procesan al mismo " +"tiempo), esta lista se modifica una vez durante el paso de física, no " +"inmediatamente después de mover los objetos. Considera usar señales en su " +"lugar." + msgid "The name of the area's audio bus." msgstr "El nombre del bus de audio de la zona." @@ -3016,22 +3343,24 @@ msgid "" "The aspect ratio to enforce on child controls. This is the width divided by " "the height. The ratio depends on the [member stretch_mode]." msgstr "" -"Define el [s]aspect ratio[/s] de los nodos hijos. Esto es el ancho dividido " -"por la altura. La proporción depende del [member stretch_mode]." +"La proporción de aspecto que se aplicará a los controles secundarios. Esta es " +"la anchura dividida por la altura. La proporción depende del [member " +"stretch_mode]." msgid "" "The height of child controls is automatically adjusted based on the width of " "the container." msgstr "" -"La altura de los controles hijos es ajustada automáticamente basada en la " -"anchura del [s]contenedor[/s]." +"La altura de los controles secundarios se ajusta automáticamente en función " +"del ancho del contenedor." msgid "" "The bounding rectangle of child controls is automatically adjusted to fit " "inside the container while keeping the aspect ratio." msgstr "" -"El rectángulo que delimita a los controles hijos es automáticamente ajustado " -"dentro del [s]contebedor[/s], mientras se mantiene el [s]aspect ratio[/s]." +"El rectángulo delimitador de los controles secundarios se ajusta " +"automáticamente para encajar dentro del contenedor manteniendo la proporción " +"de aspecto." msgid "Clears all the points and segments." msgstr "Limpia todos los puntos y segmentos." @@ -3108,8 +3437,8 @@ msgid "" "Length of the internal ring buffer, in seconds. Setting the buffer length " "will have no effect if already initialized." msgstr "" -"Tamaño de un [s]ring buffer[/s] en segundos. Ajustar esta propiedad no tendrá " -"ningún efecto si ya se ha inicializado." +"Longitud del búfer de anillo interno, en segundos. Establecer la longitud del " +"búfer no tendrá efecto si ya ha sido inicializado." msgid "Adds a chorus audio effect." msgstr "Añade un efecto de audio de coro." @@ -6486,6 +6815,160 @@ msgstr "Las partículas se emitirán en el volumen de una esfera." msgid "Particles will be emitted in the volume of a box." msgstr "Se emitirán partículas en el volumen de una caja." +msgid "" +"The Crypto class provides access to advanced cryptographic functionalities.\n" +"Currently, this includes asymmetric key encryption/decryption, signing/" +"verification, and generating cryptographically secure random bytes, RSA keys, " +"HMAC digests, and self-signed [X509Certificate]s.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var crypto = Crypto.new()\n" +"\n" +"# Generate new RSA key.\n" +"var key = crypto.generate_rsa(4096)\n" +"\n" +"# Generate new self-signed certificate with the given key.\n" +"var cert = crypto.generate_self_signed_certificate(key, \"CN=mydomain.com," +"O=My Game Company,C=IT\")\n" +"\n" +"# Save key and certificate in the user folder.\n" +"key.save(\"user://generated.key\")\n" +"cert.save(\"user://generated.crt\")\n" +"\n" +"# Encryption\n" +"var data = \"Some data\"\n" +"var encrypted = crypto.encrypt(key, data.to_utf8_buffer())\n" +"\n" +"# Decryption\n" +"var decrypted = crypto.decrypt(key, encrypted)\n" +"\n" +"# Signing\n" +"var signature = crypto.sign(HashingContext.HASH_SHA256, data.sha256_buffer(), " +"key)\n" +"\n" +"# Verifying\n" +"var verified = crypto.verify(HashingContext.HASH_SHA256, data." +"sha256_buffer(), signature, key)\n" +"\n" +"# Checks\n" +"assert(verified)\n" +"assert(data.to_utf8_buffer() == decrypted)\n" +"[/gdscript]\n" +"[csharp]\n" +"using Godot;\n" +"using System.Diagnostics;\n" +"\n" +"Crypto crypto = new Crypto();\n" +"\n" +"// Generate new RSA key.\n" +"CryptoKey key = crypto.GenerateRsa(4096);\n" +"\n" +"// Generate new self-signed certificate with the given key.\n" +"X509Certificate cert = crypto.GenerateSelfSignedCertificate(key, " +"\"CN=mydomain.com,O=My Game Company,C=IT\");\n" +"\n" +"// Save key and certificate in the user folder.\n" +"key.Save(\"user://generated.key\");\n" +"cert.Save(\"user://generated.crt\");\n" +"\n" +"// Encryption\n" +"string data = \"Some data\";\n" +"byte[] encrypted = crypto.Encrypt(key, data.ToUtf8Buffer());\n" +"\n" +"// Decryption\n" +"byte[] decrypted = crypto.Decrypt(key, encrypted);\n" +"\n" +"// Signing\n" +"byte[] signature = crypto.Sign(HashingContext.HashType.Sha256, Data." +"Sha256Buffer(), key);\n" +"\n" +"// Verifying\n" +"bool verified = crypto.Verify(HashingContext.HashType.Sha256, Data." +"Sha256Buffer(), signature, key);\n" +"\n" +"// Checks\n" +"Debug.Assert(verified);\n" +"Debug.Assert(data.ToUtf8Buffer() == decrypted);\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"La clase Crypto proporciona acceso a funcionalidades criptográficas " +"avanzadas.\n" +"Actualmente, esto incluye cifrado/descifrado de clave asimétrica, firma/" +"verificación y la generación de bytes aleatorios criptográficamente seguros, " +"claves RSA, resúmenes HMAC y certificados [X509Certificate] autofirmados.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var crypto = Crypto.new()\n" +"\n" +"# Generar una nueva clave RSA.\n" +"var key = crypto.generate_rsa(4096)\n" +"\n" +"# Generar un nuevo certificado autofirmado con la clave dada.\n" +"var cert = crypto.generate_self_signed_certificate(key, \"CN=mydomain.com," +"O=My Game Company,C=IT\")\n" +"\n" +"# Guardar la clave y el certificado en la carpeta del usuario.\n" +"key.save(\"user://generated.key\")\n" +"cert.save(\"user://generated.crt\")\n" +"\n" +"# Cifrado\n" +"var data = \"Algunos datos\"\n" +"var encrypted = crypto.encrypt(key, data.to_utf8_buffer())\n" +"\n" +"# Descifrado\n" +"var decrypted = crypto.decrypt(key, encrypted)\n" +"\n" +"# Firma\n" +"var signature = crypto.sign(HashingContext.HASH_SHA256, data.sha256_buffer(), " +"key)\n" +"\n" +"# Verificación\n" +"var verified = crypto.verify(HashingContext.HASH_SHA256, data." +"sha256_buffer(), signature, key)\n" +"\n" +"# Comprobaciones\n" +"assert(verified)\n" +"assert(data.to_utf8_buffer() == decrypted)\n" +"[/gdscript]\n" +"[csharp]\n" +"using Godot;\n" +"using System.Diagnostics;\n" +"\n" +"Crypto crypto = new Crypto();\n" +"\n" +"// Generar una nueva clave RSA.\n" +"CryptoKey key = crypto.GenerateRsa(4096);\n" +"\n" +"// Generar un nuevo certificado autofirmado con la clave dada.\n" +"X509Certificate cert = crypto.GenerateSelfSignedCertificate(key, " +"\"CN=mydomain.com,O=My Game Company,C=IT\");\n" +"\n" +"// Guardar la clave y el certificado en la carpeta del usuario.\n" +"key.Save(\"user://generated.key\");\n" +"cert.Save(\"user://generated.crt\");\n" +"\n" +"// Cifrado\n" +"string data = \"Algunos datos\";\n" +"byte[] encrypted = crypto.Encrypt(key, data.ToUtf8Buffer());\n" +"\n" +"// Descifrado\n" +"byte[] decrypted = crypto.Decrypt(key, encrypted);\n" +"\n" +"// Firma\n" +"byte[] signature = crypto.Sign(HashingContext.HashType.Sha256, Data." +"Sha256Buffer(), key);\n" +"\n" +"// Verificación\n" +"bool verified = crypto.Verify(HashingContext.HashType.Sha256, Data." +"Sha256Buffer(), signature, key);\n" +"\n" +"// Comprobaciones\n" +"Debug.Assert(verified);\n" +"Debug.Assert(data.ToUtf8Buffer() == decrypted);\n" +"[/csharp]\n" +"[/codeblocks]" + msgid "SSL certificates" msgstr "Certificados SSL" @@ -12573,6 +13056,53 @@ msgstr "" msgid "The arrow icon to be drawn on the right end of the button." msgstr "El icono de la flecha que se dibujará en el extremo derecho del botón." +msgid "" +"Requests the OS to open a resource identified by [param uri] with the most " +"appropriate program. For example:\n" +"- [code]OS.shell_open(\"C:\\\\Users\\\\name\\\\Downloads\")[/code] on Windows " +"opens the file explorer at the user's Downloads folder.\n" +"- [code]OS.shell_open(\"C:/Users/name/Downloads\")[/code] also works on " +"Windows and opens the file explorer at the user's Downloads folder.\n" +"- [code]OS.shell_open(\"https://godotengine.org\")[/code] opens the default " +"web browser on the official Godot website.\n" +"- [code]OS.shell_open(\"mailto:example@example.com\")[/code] opens the " +"default email client with the \"To\" field set to [code]example@example.com[/" +"code]. See [url=https://datatracker.ietf.org/doc/html/rfc2368]RFC 2368 - The " +"[code]mailto[/code] URL scheme[/url] for a list of fields that can be added.\n" +"Use [method ProjectSettings.globalize_path] to convert a [code]res://[/code] " +"or [code]user://[/code] project path into a system path for use with this " +"method.\n" +"[b]Note:[/b] Use [method String.uri_encode] to encode characters within URLs " +"in a URL-safe, portable way. This is especially required for line breaks. " +"Otherwise, [method shell_open] may not work correctly in a project exported " +"to the Web platform.\n" +"[b]Note:[/b] This method is implemented on Android, iOS, Web, Linux, macOS " +"and Windows." +msgstr "" +"Solicita al sistema operativo abrir un recurso identificado por [param uri] " +"con el programa más apropiado. Por ejemplo:\n" +"- [code]OS.shell_open(\"C:\\\\Users\\\\name\\\\Downloads\")[/code] en Windows " +"abre el explorador de archivos en la carpeta Descargas del usuario.\n" +"- [code]OS.shell_open(\"C:/Users/name/Downloads\")[/code] también funciona en " +"Windows y abre el explorador de archivos en la carpeta Descargas del " +"usuario.\n" +"- [code]OS.shell_open(\"https://godotengine.org\")[/code] abre el navegador " +"web predeterminado en el sitio oficial de Godot.\n" +"- [code]OS.shell_open(\"mailto:example@example.com\")[/code] abre el cliente " +"de correo electrónico predeterminado con el campo \"Para\" configurado en " +"[code]example@example.com[/code]. Ver [url=https://datatracker.ietf.org/doc/" +"html/rfc2368]RFC 2368 - El esquema de URL [code]mailto[/code][/url] para " +"obtener una lista de campos que se pueden agregar.\n" +"Utiliza [method ProjectSettings.globalize_path] para convertir una ruta de " +"proyecto [code]res://[/code] o [code]user://[/code] en una ruta del sistema " +"para usar con este método.\n" +"[b]Nota:[/b] Usa [method String.uri_encode] para codificar caracteres dentro " +"de URLs de forma segura y portable. Esto es especialmente necesario para los " +"saltos de línea. De lo contrario, [method shell_open] puede no funcionar " +"correctamente en un proyecto exportado a la plataforma Web.\n" +"[b]Nota:[/b] Este método está implementado en Android, iOS, Web, Linux, macOS " +"y Windows." + msgid "" "Appends an element at the end of the array (alias of [method push_back])." msgstr "Concatena un elemento al final del array (alias de [method push_back])." @@ -12754,6 +13284,24 @@ msgstr "" "Velocidad en la que el offset se desplaza automáticamente, en píxeles por " "segundo." +msgid "" +"If [code]true[/code], this [Parallax2D] is offset by the current camera's " +"position. If the [Parallax2D] is in a [CanvasLayer] separate from the current " +"camera, it may be desired to match the value with [member CanvasLayer." +"follow_viewport_enabled]." +msgstr "" +"Si es [code]true[/code], este [Parallax2D] se desplaza según la posición " +"actual de la cámara. Si el [Parallax2D] está en un [CanvasLayer] separado de " +"la cámara actual, puede ser conveniente sincronizar el valor con [member " +"CanvasLayer.follow_viewport_enabled]." + +msgid "" +"If [code]true[/code], [Parallax2D]'s position is not affected by the position " +"of the camera." +msgstr "" +"Si es [code]true[/code], la posición de [Parallax2D] no se ve afectada por la " +"posición de la cámara." + msgid "The base position offset for all [ParallaxLayer] children." msgstr "" "El dezplazamiento de la posición base para todos los [ParallaxLayer] hijos." @@ -13952,8 +14500,7 @@ msgstr "Un polígono 2D." msgid "Adds a bone with the specified [param path] and [param weights]." msgstr "" -"Añade un hueso en el [code]path[/code] especificado y con los [code]weights[/" -"code] especificados." +"Agrega un hueso con la [param path] y los [param weights] especificados." msgid "Removes all bones from this [Polygon2D]." msgstr "Quita todos los huesos de este [Polygon2D]." @@ -17448,7 +17995,7 @@ msgstr "" "la cuadrícula." msgid "The atlas texture." -msgstr "Hoja de texturas." +msgstr "La textura del atlas." msgid "Represents the size of the [enum TileAnimationMode] enum." msgstr "Representa el tamaño de la enumeración [enum TileAnimationMode]." @@ -20416,6 +20963,13 @@ msgstr "" "El recurso [Environment] utilizado por este [WorldEnvironment], definiendo " "las propiedades por defecto." +msgid "" +"Returns [code]true[/code] if the currently parsed element is empty, e.g. " +"[code][/code]." +msgstr "" +"Devuelve [code]true[/code] si el elemento analizado actualmente está vacío, " +"por ejemplo, [code][/code]." + msgid "There's no node (no file or buffer opened)." msgstr "No hay ningún nodo (ningún archivo o buffer abierto)." @@ -20464,6 +21018,12 @@ msgstr "Se emite cuando se presiona un botón de este controlador." msgid "Emitted when a button on this controller is released." msgstr "Se emite cuando se libera un botón de este controlador." +msgid "Mouth stretches." +msgstr "Estiramientos de la boca." + +msgid "Mouth tightens." +msgstr "La boca se tensa." + msgid "" "If this is an AR interface that requires displaying a camera feed as the " "background, this method returns the feed ID in the [CameraServer] for this " @@ -20664,3 +21224,8 @@ msgid "" "gets centered." msgstr "" "No reajusta la orientación del HMD, sólo la posición del jugador se centra." + +msgid "" +"Opens the zip archive at the given [param path] and reads its file index." +msgstr "" +"Abre el archivo zip en la [param path] dada y lee su índice de archivos." diff --git a/doc/translations/fr.po b/doc/translations/fr.po index 8f526aaa0c..62a783b9c0 100644 --- a/doc/translations/fr.po +++ b/doc/translations/fr.po @@ -115,13 +115,14 @@ # alpikespot , 2024. # dan rastock , 2024. # Théo GUEURET , 2025. +# Olivier , 2025. msgid "" msgstr "" "Project-Id-Version: Godot Engine class reference\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2025-01-23 17:32+0000\n" -"Last-Translator: Théo GUEURET \n" +"PO-Revision-Date: 2025-03-14 04:09+0000\n" +"Last-Translator: Olivier \n" "Language-Team: French \n" "Language: fr\n" @@ -129,7 +130,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 5.10-dev\n" +"X-Generator: Weblate 5.11-dev\n" msgid "All classes" msgstr "Toutes les classes" @@ -373,9 +374,23 @@ msgstr "" msgid "Built-in GDScript constants, functions, and annotations." msgstr "Constantes, fonctions et annotations intégrées à GDScript." +msgid "" +"A list of utility functions and annotations accessible from any script " +"written in GDScript.\n" +"For the list of global functions and constants that can be accessed in any " +"scripting language, see [@GlobalScope]." +msgstr "" +"Une liste de fonctions utilitaires et d'annotations, utilisables depuis " +"n'importe quel script écrit en GDScript.\n" +"Pour voir la liste des fonctions et constantes globales disponibles dans " +"n'importe quel langage, voir [@GlobalScope]." + msgid "GDScript exports" msgstr "Exports GDScript" +msgid "Use [method Color.from_rgba8] instead." +msgstr "Utilisez [method Color.from_rgba8] à la place." + msgid "" "Returns a [Color] constructed from red ([param r8]), green ([param g8]), blue " "([param b8]), and optionally alpha ([param a8]) integer channels, each " @@ -401,9 +416,9 @@ msgstr "" "utile lorsque vous devez faire correspondre des valeurs de couleur exactes " "dans une [Image].\n" "[codeblock]\n" -"var red = Color8(255, 0, 0) # Meme effet que Color(1, 0, 0).\n" -"var dark_blue = Color8(0, 0, 51) # Meme effet que Color(0, 0, 0.2).\n" -"var my_color = Color8(306, 255, 0, 102) # Meme effet que Color(1.2, 1, 0, " +"var red = Color8(255, 0, 0) # Même effet que Color(1, 0, 0).\n" +"var dark_blue = Color8(0, 0, 51) # Même effet que Color(0, 0, 0.2).\n" +"var my_color = Color8(306, 255, 0, 102) # Même effet que Color(1.2, 1, 0, " "0.4).\n" "[/codeblock]\n" "[b]Note :[/b] En raison de la précision inférieure de [method Color8] par " @@ -469,6 +484,23 @@ msgstr "" "pouvez donc pas y accéder en tant que [Callable] ou l'utiliser dans des " "expressions." +msgid "" +"Returns a single character (as a [String]) of the given Unicode code point " +"(which is compatible with ASCII code).\n" +"[codeblock]\n" +"var upper = char(65) # upper is \"A\"\n" +"var lower = char(65 + 32) # lower is \"a\"\n" +"var euro = char(8364) # euro is \"€\"\n" +"[/codeblock]" +msgstr "" +"Renvoie un unique caractère au format chaîne de caractère ([String]) " +"correspondant à la valeur Unicode donnée (compatible avec le code ASCII).\n" +"[codeblock]\n" +"var upper = char(65) # upper vaut « A »\n" +"var lower = char(65 + 32) # lower vaut « a »\n" +"var euro = char(8364) # euro vaut « € »\n" +"[/codeblock]" + msgid "Use [method @GlobalScope.type_convert] instead." msgstr "Utilisez [method @GlobalScope.type_convert] à la place." @@ -495,6 +527,13 @@ msgstr "" "print(b is Array) # Affiche false\n" "[/codeblock]" +msgid "" +"Consider using [method JSON.to_native] or [method Object.get_property_list] " +"instead." +msgstr "" +"Songez à utiliser [method JSON.to_native] ou [method Object." +"get_property_list] à la place." + msgid "" "Converts a [param dictionary] (created with [method inst_to_dict]) back to an " "Object instance. Can be useful for deserializing." @@ -553,6 +592,110 @@ msgstr "" "[b]Note :[/b] L'appel de cette fonction depuis un [Thread] n'est pas pris en " "charge. Cela renverra un tableau vide." +msgid "" +"Consider using [method JSON.from_native] or [method Object.get_property_list] " +"instead." +msgstr "" +"Songez à utiliser [method JSON.from_native] ou [method Object." +"get_property_list] à la place." + +msgid "" +"Returns the passed [param instance] converted to a Dictionary. Can be useful " +"for serializing.\n" +"[codeblock]\n" +"var foo = \"bar\"\n" +"func _ready():\n" +" var d = inst_to_dict(self)\n" +" print(d.keys())\n" +" print(d.values())\n" +"[/codeblock]\n" +"Prints out:\n" +"[codeblock lang=text]\n" +"[@subpath, @path, foo]\n" +"[, res://test.gd, bar]\n" +"[/codeblock]\n" +"[b]Note:[/b] This function can only be used to serialize objects with an " +"attached [GDScript] stored in a separate file. Objects without an attached " +"script, with a script written in another language, or with a built-in script " +"are not supported.\n" +"[b]Note:[/b] This function is not recursive, which means that nested objects " +"will not be represented as dictionaries. Also, properties passed by reference " +"([Object], [Dictionary], [Array], and packed arrays) are copied by reference, " +"not duplicated." +msgstr "" +"Retourne l'[param instance] donnée convertie en un Dictionnaire. Peut " +"s'avérer utile pour la sérialisation.\n" +"[codeblock]\n" +"var foo = \"bar\"\n" +"func _ready():\n" +" var d = inst_to_dict(self)\n" +" print(d.keys())\n" +" print(d.values())\n" +"[/codeblock]\n" +"Affiche :\n" +"[codeblock lang=text]\n" +"[@subpath, @path, foo]\n" +"[, res://test.gd, bar]\n" +"[/codeblock]\n" +"[b]Remarque :[/b] Cette fonction ne peut être utilisée que pour sérialiser " +"des objets ayant un [GDScript] associé dans un fichier séparé. Les objets " +"sans script associé, avec un script écrit dans un autre langage, ou encore " +"avec un script incorporé ne sont pas supportés.\n" +"[b]Remarque :[/b] Cette fonction n'est pas récursive. Ce qui veut dire que " +"les objets contenus ne seront pas représentés sous forme de dictionnaire. " +"Aussi, les propriétés passées par référence ([Object], [Dictionary], [Array], " +"et packed arrays) seront copiées par référence, pas dupliquées." + +msgid "" +"Returns [code]true[/code] if [param value] is an instance of [param type]. " +"The [param type] value must be one of the following:\n" +"- A constant from the [enum Variant.Type] enumeration, for example [constant " +"TYPE_INT].\n" +"- An [Object]-derived class which exists in [ClassDB], for example [Node].\n" +"- A [Script] (you can use any class, including inner one).\n" +"Unlike the right operand of the [code]is[/code] operator, [param type] can be " +"a non-constant value. The [code]is[/code] operator supports more features " +"(such as typed arrays). Use the operator instead of this method if you do not " +"need dynamic type checking.\n" +"[b]Examples:[/b]\n" +"[codeblock]\n" +"print(is_instance_of(a, TYPE_INT))\n" +"print(is_instance_of(a, Node))\n" +"print(is_instance_of(a, MyClass))\n" +"print(is_instance_of(a, MyClass.InnerClass))\n" +"[/codeblock]\n" +"[b]Note:[/b] If [param value] and/or [param type] are freed objects (see " +"[method @GlobalScope.is_instance_valid]), or [param type] is not one of the " +"above options, this method will raise a runtime error.\n" +"See also [method @GlobalScope.typeof], [method type_exists], [method Array." +"is_same_typed] (and other [Array] methods)." +msgstr "" +"Renvoie [code]true[/code] si [param value] est une instance de [param type]. " +"La valeur de [param type] doit être l'une des suivantes :\n" +"- Une constante de l'énumération [enum Variant.Type], par exemple [constant " +"TYPE_INT].\n" +"- Une classe dérivée de [Object] qui existe dans [ClassDB], par exemple " +"[Node].\n" +"- Un [Script] (vous pouvez utiliser n'importe quelle classe, y compris une " +"classe interne).\n" +"Contrairement à l'opérande droit de l'opérateur [code]is[/code], [param type] " +"peut être une valeur non constante. L'opérateur [code]is[/code] prend en " +"charge davantage de fonctionnalités (telles que les tableaux typés). Utilisez " +"l'opérateur au lieu de cette méthode si vous n'avez pas besoin d'une " +"vérification dynamique des types.\n" +"[b]Exemples :[/b]\n" +"[codeblock]\n" +"print(is_instance_of(a, TYPE_INT))\n" +"print(is_instance_of(a, Node))\n" +"print(is_instance_of(a, MyClass))\n" +"print(is_instance_of(a, MyClass.InnerClass))\n" +"[/codeblock]\n" +"[b]Note :[/b] Si [param value] et/ou [param type] sont des objets libérés " +"(voir [method @GlobalScope.is_instance_valid]), ou si [param type] n'est pas " +"l'une des options ci-dessus, cette méthode lèvera une erreur d'exécution.\n" +"Voir aussi [method @GlobalScope.typeof], [method type_exists], [method Array." +"is_same_typed] (et autres méthodes [Array])." + msgid "" "Returns a [Resource] from the filesystem located at the absolute [param " "path]. Unless it's already referenced elsewhere (such as in another script or " @@ -778,7 +921,7 @@ msgstr "" "à virgule) invalide. [constant NAN] a des propriétés particulières, notamment " "que [code] !=[/code] retourne toujours [code]true[/code], tandis que les " "autres comparateurs retournerons toujours [code]false[/code]. Cela est vrai " -"meme en le comparant à lui-même ([code]NAN == NAN[/code] retourne " +"même en le comparant à lui-même ([code]NAN == NAN[/code] retourne " "[code]false[/code] et [code]NAN != NAN[/code] retourne [code]true[/code]). " "NAN est retourné par certaines operations invalides telles que diviser un " "nombre flottant [code]0.0[/code] par [code]0.0[/code].\n" @@ -12163,9 +12306,9 @@ msgstr "" "supporte la recherche dans la liste lorsque le contrôle est en focus. Appuyez " "sur une touche qui correspond à la premiere lettre d'un objet pour " "sélectionner le premier objet commençant par cette lettre. Après cela, il y à " -"deux façons d'effectuer une recherche incrémentale : 1) Appuyez sur la meme " +"deux façons d'effectuer une recherche incrémentale : 1) Appuyez sur la même " "touche pendant la fin du délai pour sélectionner l'objet suivant commençant " -"par la meme lettre. 2) Entrer les lettres qui correspondent au reste du mot " +"par la même lettre. 2) Entrer les lettres qui correspondent au reste du mot " "avant la fin du délai pour sélectionner l'objet directement.\n" "Ces deux actions retournerons au debut de la liste si le délai a expiré " "depuis le dernier appui enregistré. Vous pouvez ajuster la longueur du délai " diff --git a/doc/translations/ga.po b/doc/translations/ga.po index 7fc4e8aff2..22f356d081 100644 --- a/doc/translations/ga.po +++ b/doc/translations/ga.po @@ -67543,17 +67543,6 @@ msgstr "" msgid "Provides access to the Java Native Interface." msgstr "Soláthraíonn rochtain ar an Java Dúchasach Chomhéadain...." -msgid "" -"Wraps a class defined in Java, and returns it as a [JavaClass] [Object] type " -"that Godot can interact with.\n" -"[b]Note:[/b] This method only works on Android. On every other platform, this " -"method does nothing and returns an empty [JavaClass]." -msgstr "" -"Wraps rang sainithe i Java, agus ar ais é mar [JavaClass] [Réad] chineál gur " -"féidir Godot idirghníomhú leis.\n" -"[b]Nóta:[/b] Ní oibríonn an modh seo ach ar Android. Ar gach ardán eile, ní " -"dhéanann an modh seo rud ar bith agus filleann sé folamh [JavaClass]." - msgid "Represents an object from the Java Native Interface." msgstr "Is ionann é agus réad ón gComhéadan Dúchasach Java." @@ -70500,13 +70489,6 @@ msgstr "" "Suíomh colún an fheighlí laistigh den [LineEdit]. Nuair a bheidh sé " "socraithe, féadfaidh an téacs scrollú chun freastal air." -msgid "" -"If [code]true[/code], the [LineEdit] will always show the caret, even if " -"focus is lost." -msgstr "" -"Más [code]true[/code], taispeánfaidh an [LineEdit] an feirm i gcónaí, fiú má " -"chailltear an fócas." - msgid "" "Allow moving caret, selecting and removing the individual composite character " "components.\n" @@ -74958,13 +74940,6 @@ msgstr "" "Filleann íosleithead roghchláir dhomhanda.\n" "[b]Nóta:[/b] Is ar macOS amháin a chuirtear an modh seo i bhfeidhm." -msgid "" -"Returns global menu open callback.\n" -"b]Note:[/b] This method is implemented only on macOS." -msgstr "" -"Filleann roghchlár domhanda aisghlao oscailte.\n" -"b]Nóta:[/b] Is ar macOS amháin a chuirtear an modh seo i bhfeidhm." - msgid "" "Returns global menu size.\n" "[b]Note:[/b] This method is implemented on macOS and Windows." diff --git a/doc/translations/it.po b/doc/translations/it.po index 1bb3feb7e6..a583df60cc 100644 --- a/doc/translations/it.po +++ b/doc/translations/it.po @@ -38,13 +38,14 @@ # PinePunk16 , 2024. # Simone Lungarella , 2024. # Ott8v , 2024. -# Micky , 2024. +# Micky , 2024, 2025. # Ludovico Cammarata , 2024. +# Gabriele Ellena , 2025. msgid "" msgstr "" "Project-Id-Version: Godot Engine class reference\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" -"PO-Revision-Date: 2024-11-27 20:00+0000\n" +"PO-Revision-Date: 2025-03-24 21:33+0000\n" "Last-Translator: Micky \n" "Language-Team: Italian \n" @@ -53,7 +54,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.9-dev\n" +"X-Generator: Weblate 5.11-dev\n" msgid "All classes" msgstr "Tutte le classi" @@ -298,9 +299,22 @@ msgstr "" msgid "Built-in GDScript constants, functions, and annotations." msgstr "Costanti, funzioni e annotazioni di GDScript integrate." +msgid "" +"A list of utility functions and annotations accessible from any script " +"written in GDScript.\n" +"For the list of global functions and constants that can be accessed in any " +"scripting language, see [@GlobalScope]." +msgstr "" +"Una lista di funzioni di utilità e annotazioni, accessibili da qualsiasi " +"script scritto in GDScript.\n" +"Per la lista di funzioni e costanti globali vedi [@GlobalScope]." + msgid "GDScript exports" msgstr "Esportazione GDScript" +msgid "Use [method Color.from_rgba8] instead." +msgstr "Utilizza invece [method Color.from_rgba8]." + msgid "" "Returns a [Color] constructed from red ([param r8]), green ([param g8]), blue " "([param b8]), and optionally alpha ([param a8]) integer channels, each " @@ -387,6 +401,23 @@ msgstr "" "[b]Note:[/b] [method assert] è una parola chiave, non una funzione. Perciò " "non puoi accedervi come un [Callable] o usarla all'interno di espressioni." +msgid "" +"Returns a single character (as a [String]) of the given Unicode code point " +"(which is compatible with ASCII code).\n" +"[codeblock]\n" +"var upper = char(65) # upper is \"A\"\n" +"var lower = char(65 + 32) # lower is \"a\"\n" +"var euro = char(8364) # euro is \"€\"\n" +"[/codeblock]" +msgstr "" +"Restituisce un singolo carattere (come [String]) dal codice Unicode " +"specificato (compatibile con il codice ASCII).\n" +"[codeblock]\n" +"var maiusc = char(65) # maiusc è \"A\"\n" +"var minusc = char(65 + 32) # minusc è \"a\"\n" +"var euro = char(8364) # euro è \"€\"\n" +"[/codeblock]" + msgid "Use [method @GlobalScope.type_convert] instead." msgstr "Usa [method @GlobalScope.type_convert] invece." @@ -413,6 +444,13 @@ msgstr "" "print(b is Array) # Stampa false\n" "[/codeblock]" +msgid "" +"Consider using [method JSON.to_native] or [method Object.get_property_list] " +"instead." +msgstr "" +"Considera invece di utilizzare [method JSON.to_native] o [method Object." +"get_property_list]." + msgid "" "Converts a [param dictionary] (created with [method inst_to_dict]) back to an " "Object instance. Can be useful for deserializing." @@ -471,6 +509,204 @@ msgstr "" "[b]Nota:[/b] Chiamare questa funzione da un [Thread] non è supportato. " "Facendolo verrà restituito un array vuoto." +msgid "" +"Consider using [method JSON.from_native] or [method Object.get_property_list] " +"instead." +msgstr "" +"Considera invece di utilizzare [method JSON.from_native] o [method Object." +"get_property_list]." + +msgid "" +"Returns the passed [param instance] converted to a Dictionary. Can be useful " +"for serializing.\n" +"[codeblock]\n" +"var foo = \"bar\"\n" +"func _ready():\n" +" var d = inst_to_dict(self)\n" +" print(d.keys())\n" +" print(d.values())\n" +"[/codeblock]\n" +"Prints out:\n" +"[codeblock lang=text]\n" +"[@subpath, @path, foo]\n" +"[, res://test.gd, bar]\n" +"[/codeblock]\n" +"[b]Note:[/b] This function can only be used to serialize objects with an " +"attached [GDScript] stored in a separate file. Objects without an attached " +"script, with a script written in another language, or with a built-in script " +"are not supported.\n" +"[b]Note:[/b] This function is not recursive, which means that nested objects " +"will not be represented as dictionaries. Also, properties passed by reference " +"([Object], [Dictionary], [Array], and packed arrays) are copied by reference, " +"not duplicated." +msgstr "" +"Restituisce l'istanza [param instance] convertita in un dizionario. Può " +"essere utile per la serializzazione.\n" +"[codeblock]\n" +"var foo = \"bar\"\n" +"func _ready():\n" +" var d = inst_to_dict(self)\n" +" print(d.keys())\n" +" print(d.values())\n" +"[/codeblock]\n" +"Stampa:\n" +"[codeblock lang=text]\n" +"[@subpath, @path, foo]\n" +"[, res://test.gd, bar]\n" +"[/codeblock]\n" +"[b]Nota:[/b] Questa funzione può essere utilizzata solo per serializzare " +"oggetti il quale [GDScript] allegato è memorizzato in un file separato. Gli " +"oggetti senza uno script allegato, con uno script scritto in un altro " +"linguaggio o con uno script integrato non sono supportati.\n" +"[b]Nota:[/b] Questa funzione non è ricorsiva, il che significa che gli " +"oggetti nidificati non saranno rappresentati come dizionari. Inoltre, le " +"proprietà passate per riferimento ([Object], [Dictionary], [Array] e array " +"impacchettati) vengono copiate per riferimento, non duplicate." + +msgid "" +"Returns [code]true[/code] if [param value] is an instance of [param type]. " +"The [param type] value must be one of the following:\n" +"- A constant from the [enum Variant.Type] enumeration, for example [constant " +"TYPE_INT].\n" +"- An [Object]-derived class which exists in [ClassDB], for example [Node].\n" +"- A [Script] (you can use any class, including inner one).\n" +"Unlike the right operand of the [code]is[/code] operator, [param type] can be " +"a non-constant value. The [code]is[/code] operator supports more features " +"(such as typed arrays). Use the operator instead of this method if you do not " +"need dynamic type checking.\n" +"[b]Examples:[/b]\n" +"[codeblock]\n" +"print(is_instance_of(a, TYPE_INT))\n" +"print(is_instance_of(a, Node))\n" +"print(is_instance_of(a, MyClass))\n" +"print(is_instance_of(a, MyClass.InnerClass))\n" +"[/codeblock]\n" +"[b]Note:[/b] If [param value] and/or [param type] are freed objects (see " +"[method @GlobalScope.is_instance_valid]), or [param type] is not one of the " +"above options, this method will raise a runtime error.\n" +"See also [method @GlobalScope.typeof], [method type_exists], [method Array." +"is_same_typed] (and other [Array] methods)." +msgstr "" +"Restituisce [code]true[/code] se [param value] è un'istanza del tipo [param " +"type]. Il valore [param type] deve essere uno dei seguenti:\n" +"- Una costante dall'enumerazione [enum Variant.Type], per esempio " +"[TYPE_INT].\n" +"- Una classe derivante da [Object] che esiste in [ClassDB], per esempio " +"[Node].\n" +"- Uno [Script] (è possibile utilizzare qualsiasi classe, comprese quelle " +"interne).\n" +"A differenza dell'operando destro dell'operatore [code]is[/code], [param " +"type] può essere un valore non costante. L'operatore [code]is[/code] supporta " +"più funzionalità (ad esempio array tipizzati). Utilizza l'operatore invece di " +"questo metodo se non hai bisogno di verificare il tipo dinamicamente.\n" +"[b]Esempi:[/b]\n" +"[codeblock]\n" +"print(is_instance_of(a, TYPE_INT))\n" +"print(is_instance_of(a, Node))\n" +"print(is_instance_of(a, MyClass))\n" +"print(is_instance_of(a, MyClass.InnerClass))\n" +"[/codeblock]\n" +"[b]Nota:[/b] Se [param value] e/o [param type] sono oggetti liberati (vedi " +"[method @GlobalScope.is_instance_valid]), o [param type] non è una delle " +"opzioni precedenti, questo metodo genererà un errore durante l'esecuzione.\n" +"Vedi anche [method @GlobalScope.typeof], [method type_exists], [method Array." +"is_same_typed] (e altri metodi di [Array])." + +msgid "" +"Returns the length of the given Variant [param var]. The length can be the " +"character count of a [String] or [StringName], the element count of any array " +"type, or the size of a [Dictionary]. For every other Variant type, a run-time " +"error is generated and execution is stopped.\n" +"[codeblock]\n" +"var a = [1, 2, 3, 4]\n" +"len(a) # Returns 4\n" +"\n" +"var b = \"Hello!\"\n" +"len(b) # Returns 6\n" +"[/codeblock]" +msgstr "" +"Restituisce la lunghezza del [Variant] [param var]. La lunghezza può essere " +"il numero dei caratteri di una [String] o [StringName], il numero degli " +"elementi di un tipo di array, o la dimensione di un [Dictionary]. Per ogni " +"altro tipo di [Variant], un errore verrà generato e l'esecuzione verrà " +"interrotta.\n" +"[codeblock]\n" +"var a = [1, 2, 3, 4]\n" +"len(a) # Restituisce 4\n" +"\n" +"var b = \"Ciao!\"\n" +"len(b) # Restituisce 6\n" +"[/codeblock]" + +msgid "" +"Returns a [Resource] from the filesystem located at the absolute [param " +"path]. Unless it's already referenced elsewhere (such as in another script or " +"in the scene), the resource is loaded from disk on function call, which might " +"cause a slight delay, especially when loading large scenes. To avoid " +"unnecessary delays when loading something multiple times, either store the " +"resource in a variable or use [method preload]. This method is equivalent of " +"using [method ResourceLoader.load] with [constant ResourceLoader." +"CACHE_MODE_REUSE].\n" +"[b]Note:[/b] Resource paths can be obtained by right-clicking on a resource " +"in the FileSystem dock and choosing \"Copy Path\", or by dragging the file " +"from the FileSystem dock into the current script.\n" +"[codeblock]\n" +"# Load a scene called \"main\" located in the root of the project directory " +"and cache it in a variable.\n" +"var main = load(\"res://main.tscn\") # main will contain a PackedScene " +"resource.\n" +"[/codeblock]\n" +"[b]Important:[/b] Relative paths are [i]not[/i] relative to the script " +"calling this method, instead it is prefixed with [code]\"res://\"[/code]. " +"Loading from relative paths might not work as expected.\n" +"This function is a simplified version of [method ResourceLoader.load], which " +"can be used for more advanced scenarios.\n" +"[b]Note:[/b] Files have to be imported into the engine first to load them " +"using this function. If you want to load [Image]s at run-time, you may use " +"[method Image.load]. If you want to import audio files, you can use the " +"snippet described in [member AudioStreamMP3.data].\n" +"[b]Note:[/b] If [member ProjectSettings.editor/export/" +"convert_text_resources_to_binary] is [code]true[/code], [method @GDScript." +"load] will not be able to read converted files in an exported project. If you " +"rely on run-time loading of files present within the PCK, set [member " +"ProjectSettings.editor/export/convert_text_resources_to_binary] to " +"[code]false[/code]." +msgstr "" +"Restituisce una [Resource] dal filesystem posizionata nel percorso assoluto " +"[param path]. A meno che non sia già referenziata altrove (per esempio in un " +"altro script o nella scena), la risorsa viene caricata dal disco alla " +"chiamata del metodo, il che potrebbe causare un leggero ritardo, specialmente " +"quando si caricano grandi scene. Per evitare ritardi superflui in caso di più " +"caricamenti, salvare la risorsa in una variabile o usare [method preload]. " +"Questo metodo è equivalente a usare [method ResourceLoader.load] con " +"[constant ResourceLoader.CACHE_MODE_REUSE].\n" +"[b]Nota:[/b] È possibile ottenere i percorsi delle risorse cliccando con il " +"tasto destro su una risorsa nel pannello Filesystem e scegliendo \"Copia " +"percorso\" o trascinando il file dal pannello Filesystem nello script " +"attuale.\n" +"[codeblock]\n" +"# Carica una scena chiamata main che si trova alla radice della cartella di " +"progetto e salvala temporaneamente in una variabile.\n" +"var main = load(\"res://main.tscn\") # main conterrà una risorsa " +"PackedScene.\n" +"[/codeblock]\n" +"[b]Importante:[/b] I percorsi relativi [i]non[/i] sono relativi allo script " +"che chiama questo metodo, invece è preceduto da [code]\"res://\"[/code]. Il " +"caricamento da percorsi relativi potrebbe non funzionare come previsto.\n" +"Questo metodo è una versione semplificata di [method ResourceLoader.load], " +"che può essere usata in casi più avanzati.\n" +"[b]Nota:[/b] I file devono essere prima importati nel motore per caricarli " +"tramite questa funzione. Se si desidera caricare [Image] in fase di " +"esecuzione, è possibile usare [method Image.load]. Se si desidera importare " +"file audio, è possibile usare lo snippet descritto in [member AudioStreamMP3." +"data].\n" +"[b]Nota:[/b] Se [member ProjectSettings.editor/export/" +"convert_text_resources_to_binary] è [code]true[/code], [method @GDScript." +"load] non sarà in grado di leggere i file convertiti in un progetto " +"esportato. Se è desiderato caricare i file presenti nel PCK in fase di " +"esecuzione, imposta [member ProjectSettings.editor/export/" +"convert_text_resources_to_binary] su [code]false[/code]." + msgid "" "Returns a [Resource] from the filesystem located at [param path]. During run-" "time, the resource is loaded when the script is being parsed. This function " @@ -552,6 +788,105 @@ msgstr "" "[b]Nota:[/b] Chiamare questa funzione da un [Thread] non è supportato. " "Facendolo invece stamperà l'ID del thread." +msgid "" +"Returns an array with the given range. [method range] can be called in three " +"ways:\n" +"[code]range(n: int)[/code]: Starts from 0, increases by steps of 1, and stops " +"[i]before[/i] [code]n[/code]. The argument [code]n[/code] is [b]exclusive[/" +"b].\n" +"[code]range(b: int, n: int)[/code]: Starts from [code]b[/code], increases by " +"steps of 1, and stops [i]before[/i] [code]n[/code]. The arguments [code]b[/" +"code] and [code]n[/code] are [b]inclusive[/b] and [b]exclusive[/b], " +"respectively.\n" +"[code]range(b: int, n: int, s: int)[/code]: Starts from [code]b[/code], " +"increases/decreases by steps of [code]s[/code], and stops [i]before[/i] " +"[code]n[/code]. The arguments [code]b[/code] and [code]n[/code] are " +"[b]inclusive[/b] and [b]exclusive[/b], respectively. The argument [code]s[/" +"code] [b]can[/b] be negative, but not [code]0[/code]. If [code]s[/code] is " +"[code]0[/code], an error message is printed.\n" +"[method range] converts all arguments to [int] before processing.\n" +"[b]Note:[/b] Returns an empty array if no value meets the value constraint (e." +"g. [code]range(2, 5, -1)[/code] or [code]range(5, 5, 1)[/code]).\n" +"[b]Examples:[/b]\n" +"[codeblock]\n" +"print(range(4)) # Prints [0, 1, 2, 3]\n" +"print(range(2, 5)) # Prints [2, 3, 4]\n" +"print(range(0, 6, 2)) # Prints [0, 2, 4]\n" +"print(range(4, 1, -1)) # Prints [4, 3, 2]\n" +"[/codeblock]\n" +"To iterate over an [Array] backwards, use:\n" +"[codeblock]\n" +"var array = [3, 6, 9]\n" +"for i in range(array.size() - 1, -1, -1):\n" +" print(array[i])\n" +"[/codeblock]\n" +"Output:\n" +"[codeblock lang=text]\n" +"9\n" +"6\n" +"3\n" +"[/codeblock]\n" +"To iterate over [float], convert them in the loop.\n" +"[codeblock]\n" +"for i in range (3, 0, -1):\n" +" print(i / 10.0)\n" +"[/codeblock]\n" +"Output:\n" +"[codeblock lang=text]\n" +"0.3\n" +"0.2\n" +"0.1\n" +"[/codeblock]" +msgstr "" +"Restituisce un array contenente l'intervallo fornito. [method range] può " +"essere chiamato in tre modi:\n" +"[code]range(n:int)[/code]: Parte da 0, incrementa di 1 a ogni passaggio, e si " +"ferma [i]prima di[/i][code]n[/code]. L'argomento [code]n[/code] è " +"[b]esclusivo[/b].\n" +"[code]range(b: int, n: int)[/code]: Parte da [code]b[/code], incrementa di 1 " +"a ogni passaggio, e si ferma [i]prima[/i] di [code]n[/code]. Gli argomenti " +"[code]b[/code] e [code]n[/code] sono, rispettivamente, [b]inclusivo[/b] ed " +"[b]esclusivo[/b].\n" +"[code]range(b: int, n: int, s: int)[/code]: Parte da [code]b[/code], aumenta/" +"diminuisce di [code]s[/code] a ogni passaggio, e si ferma [i]prima[/i] di " +"[code]n[/code]. Gli argomenti [code]b[/code] e [code]n[/code] sono, " +"rispettivamente, [b]inclusivi[/b] ed [b]esclusivi[/b]. L'argomento [code]s[/" +"code] [b]può[/b] essere negativo, ma non [code]0[/code]. Se [code]s[/code] è " +"[code]0[/code], un messaggio di errore verrà stampato.\n" +"[method range] converte tutti gli argomenti a [int] prima di elaborarli.\n" +"[b]Nota:[/b] Restituisce un array vuoto se nessun valore soddisfa i requisiti " +"(es. [code]range(2, 5, -1)[/code] or [code]range(5, 5, 1)[/code]).\n" +"[b]Esempi:[/b]\n" +"[codeblock]\n" +"print(range(4)) # Stampa [0, 1, 2, 3]\n" +"print(range(2, 5)) # Stampa [2, 3, 4]\n" +"print(range(0, 6, 2)) # Stampa [0, 2, 4]\n" +"print(range(4, 1, -1)) # Stampa [4, 3, 2]\n" +"[/codeblock]\n" +"Per iterare su un [Array] all'indietro, usa:\n" +"[codeblock]\n" +"var array = [3, 6, 9]\n" +"for i in range(array.size(), 0, -1):\n" +" print(array[i - 1])\n" +"[/codeblock]\n" +"Risultato:\n" +"[codeblock]\n" +"9\n" +"6\n" +"3\n" +"[/codeblock]\n" +"Per iterare su un [float], convertili nel ciclo.\n" +"[codeblock]\n" +"for i in range (3, 0, -1):\n" +" print(i / 10.0)\n" +"[/codeblock]\n" +"Risultato:\n" +"[codeblock lang=text]\n" +"0.3\n" +"0.2\n" +"0.1\n" +"[/codeblock]" + msgid "" "Returns [code]true[/code] if the given [Object]-derived class exists in " "[ClassDB]. Note that [Variant] data types are not registered in [ClassDB].\n" @@ -1388,6 +1723,203 @@ msgstr "" "@export var c: int # Memorizzato nel file, visualizzato nell'editor.\n" "[/codeblock]" +msgid "" +"Define a new subgroup for the following exported properties. This helps to " +"organize properties in the Inspector dock. Subgroups work exactly like " +"groups, except they need a parent group to exist. See [annotation " +"@export_group].\n" +"See also [constant PROPERTY_USAGE_SUBGROUP].\n" +"[codeblock]\n" +"@export_group(\"Racer Properties\")\n" +"@export var nickname = \"Nick\"\n" +"@export var age = 26\n" +"\n" +"@export_subgroup(\"Car Properties\", \"car_\")\n" +"@export var car_label = \"Speedy\"\n" +"@export var car_number = 3\n" +"[/codeblock]\n" +"[b]Note:[/b] Subgroups cannot be nested, but you can use the slash separator " +"([code]/[/code]) to achieve the desired effect:\n" +"[codeblock]\n" +"@export_group(\"Car Properties\")\n" +"@export_subgroup(\"Wheels\", \"wheel_\")\n" +"@export_subgroup(\"Wheels/Front\", \"front_wheel_\")\n" +"@export var front_wheel_strength = 10\n" +"@export var front_wheel_mobility = 5\n" +"@export_subgroup(\"Wheels/Rear\", \"rear_wheel_\")\n" +"@export var rear_wheel_strength = 8\n" +"@export var rear_wheel_mobility = 3\n" +"@export_subgroup(\"Wheels\", \"wheel_\")\n" +"@export var wheel_material: PhysicsMaterial\n" +"[/codeblock]" +msgstr "" +"Definire un nuovo sottogruppo per le seguenti proprietà esportate. Questo " +"aiuta a organizzare le proprietà nel pannello dell'ispettore. I sottogruppi " +"funzionano esattamente come i gruppi, tranne che hanno bisogno di un gruppo " +"genitore per esistere. Vedi [annotation @export_group].\n" +"Vedi anche [constant PROPERTY_USAGE_SUBGROUP].\n" +"[codeblock]\n" +"@export_group(\"Propertà del pilota\")\n" +"@export var nickname = \"Nick\"\n" +"@export var age = 26\n" +"\n" +"@export_subgroup(\"Proprietà dell'auto\", \"car_\")\n" +"@export var car_label = \"Speedy\"\n" +"@export var car_number = 3\n" +"[/codeblock]\n" +"[b]Nota:[/b] I sottogruppi non possono essere annidati, ma è possibile usare " +"il separatore barra ([code]/[/code]) per ottenere l'effetto desiderato:\n" +"[codeblock]\n" +"@export_group(\"Proprietà dell'auto\")\n" +"@export_subgroup(\"Ruote\", \"ruota_\")\n" +"@export_subgroup(\"Ruote/Avanti\", \"ruota_avanti_\")\n" +"@export var ruota_avanti_forza= 10\n" +"@export var ruota_avanti_mobilità = 5\n" +"@export_subgroup(\"Ruote/Dietro\", \"ruota_dietro_\")\n" +"@export var ruota_dietro_forza = 8\n" +"@export var ruota_dietro_mobilità = 3\n" +"@export_subgroup(\"Ruota\", \"ruota_\")\n" +"@export var ruota_materiale: PhysicsMaterial\n" +"[/codeblock]" + +msgid "" +"Export a [Callable] property as a clickable button with the label [param " +"text]. When the button is pressed, the callable is called.\n" +"If [param icon] is specified, it is used to fetch an icon for the button via " +"[method Control.get_theme_icon], from the [code]\"EditorIcons\"[/code] theme " +"type. If [param icon] is omitted, the default [code]\"Callable\"[/code] icon " +"is used instead.\n" +"Consider using the [EditorUndoRedoManager] to allow the action to be reverted " +"safely.\n" +"See also [constant PROPERTY_HINT_TOOL_BUTTON].\n" +"[codeblock]\n" +"@tool\n" +"extends Sprite2D\n" +"\n" +"@export_tool_button(\"Hello\") var hello_action = hello\n" +"@export_tool_button(\"Randomize the color!\", \"ColorRect\")\n" +"var randomize_color_action = randomize_color\n" +"\n" +"func hello():\n" +" print(\"Hello world!\")\n" +"\n" +"func randomize_color():\n" +" var undo_redo = EditorInterface.get_editor_undo_redo()\n" +" undo_redo.create_action(\"Randomized Sprite2D Color\")\n" +" undo_redo.add_do_property(self, &\"self_modulate\", Color(randf(), " +"randf(), randf()))\n" +" undo_redo.add_undo_property(self, &\"self_modulate\", self_modulate)\n" +" undo_redo.commit_action()\n" +"[/codeblock]\n" +"[b]Note:[/b] The property is exported without the [constant " +"PROPERTY_USAGE_STORAGE] flag because a [Callable] cannot be properly " +"serialized and stored in a file.\n" +"[b]Note:[/b] In an exported project neither [EditorInterface] nor " +"[EditorUndoRedoManager] exist, which may cause some scripts to break. To " +"prevent this, you can use [method Engine.get_singleton] and omit the static " +"type from the variable declaration:\n" +"[codeblock]\n" +"var undo_redo = Engine.get_singleton(&\"EditorInterface\")." +"get_editor_undo_redo()\n" +"[/codeblock]\n" +"[b]Note:[/b] Avoid storing lambda callables in member variables of " +"[RefCounted]-based classes (e.g. resources), as this can lead to memory " +"leaks. Use only method callables and optionally [method Callable.bind] or " +"[method Callable.unbind]." +msgstr "" +"Esporta una proprietà [Callable] come pulsante cliccabile con l'etichetta " +"[param text]. Quando il pulsante viene premuto, il chiamabile viene " +"chiamato.\n" +"Se [param icon] è specificato, viene utilizzato per recuperare un'icona per " +"il pulsante tramite [method Control.get_theme_icon], dal tipo di tema " +"[code]\"EditorIcons\"[/code]. Se [param icon] viene omesso, viene utilizzata " +"l'icona predefinita [code]\"Callable\"[/code].\n" +"Considera di usare [EditorUndoRedoManager] per prevedere l'annullamento " +"sicuro dell'azione.\n" +"Vedi anche [constant PROPERTY_HINT_TOOL_BUTTON].\n" +"[codeblock]\n" +"@tool\n" +"extends Sprite2D\n" +"\n" +"@export_tool_button(\"Ciao\") var azione_ciao = ciao\n" +"@export_tool_button(\"Randomizza il colore!\", \"ColorRect\")\n" +"var azione_randomizza_colore = randomizza_colore\n" +"\n" +"func ciao():\n" +" print(\"Ciao mondo!\")\n" +"\n" +"func randomizza_colore():\n" +" var undo_redo = EditorInterface.get_editor_undo_redo()\n" +" undo_redo.create_action(\"Colore di Sprite2D randomizzato\")\n" +" undo_redo.add_do_property(self, &\"self_modulate\", Color(randf(), " +"randf(), randf()))\n" +" undo_redo.add_undo_property(self, &\"self_modulate\", self_modulate)\n" +" undo_redo.commit_action()\n" +"[/codeblock]\n" +"[b]Nota:[/b] La proprietà è esportata senza il flag [constant " +"PROPERTY_USAGE_STORAGE] perché un [Callable] non può essere serializzato " +"correttamente e memorizzato in un file.\n" +"[b]Nota:[/b] In un progetto esportato non esistono né [EditorInterface] né " +"[EditorUndoRedoManager], il che potrebbe causare alcuni script a non " +"funzionare correttamente. Per evitare ciò, è possibile usare [method Engine." +"get_singleton] e omettere il tipo statico dalla dichiarazione della " +"variabile:\n" +"[codeblock]\n" +"var undo_redo = Engine.get_singleton(&\"EditorInterface\")." +"get_editor_undo_redo()\n" +"[/codeblock]\n" +"[b]Nota:[/b] Evita di memorizzare i chiamabili lambda nelle variabili membro " +"delle classi basate su [RefCounted] (ad esempio risorse), poiché ciò può " +"causare perdite di memoria. Utilizza solo i chiamabili da metodi e " +"facoltativamente [method Callable.bind] o [method Callable.unbind]." + +msgid "" +"Add a custom icon to the current script. The icon specified at [param " +"icon_path] is displayed in the Scene dock for every node of that class, as " +"well as in various editor dialogs.\n" +"[codeblock]\n" +"@icon(\"res://path/to/class/icon.svg\")\n" +"[/codeblock]\n" +"[b]Note:[/b] Only the script can have a custom icon. Inner classes are not " +"supported.\n" +"[b]Note:[/b] As annotations describe their subject, the [annotation @icon] " +"annotation must be placed before the class definition and inheritance.\n" +"[b]Note:[/b] Unlike most other annotations, the argument of the [annotation " +"@icon] annotation must be a string literal (constant expressions are not " +"supported)." +msgstr "" +"Aggiunge un'icona personalizzata allo script attuale. L'icona specificata dal " +"percorso [param icon_path] viene visualizzata nel pannello di Scena per ogni " +"nodo di quella classe, così come in varie finestre di dialogo dell'editor.\n" +"[codeblock]\n" +"@icon(\"res://path/to/class/icon.svg\")\n" +"[/codeblock]\n" +"[b]Nota:[/b] Solo lo script può avere un'icona personalizzata. Le classi " +"interne non sono supportate.\n" +"[b]Nota:[/b] Poiché le annotazioni descrivono il loro soggetto, l'annotazione " +"[annotation @icon] deve essere posta prima della definizione di classe e di " +"eredità.\n" +"[b]Nota:[/b] A differenza di altre annotazioni, l'argomento dell'annotazione " +"[annotation @icon] deve essere una stringa letterale (le espressioni costanti " +"non sono supportate)." + +msgid "" +"Mark the following property as assigned when the [Node] is ready. Values for " +"these properties are not assigned immediately when the node is initialized " +"([method Object._init]), and instead are computed and stored right before " +"[method Node._ready].\n" +"[codeblock]\n" +"@onready var character_name = $Label\n" +"[/codeblock]" +msgstr "" +"Segna la proprietà seguente come assegnata quando il nodo è pronto. I valori " +"per queste proprietà non vengono assegnati immediatamente quando il nodo " +"viene inizializzato ([method Object._init]), e invece vengono calcolati e " +"memorizzati subito prima di [method Node._ready].\n" +"[codeblock]\n" +"@onready var nome_personaggio = $Label\n" +"[/codeblock]" + msgid "" "Mark the following method for remote procedure calls. See [url=$DOCS_URL/" "tutorials/networking/high_level_multiplayer.html]High-level multiplayer[/" @@ -1514,9 +2046,106 @@ msgstr "" "[annotation @tool] deve essere posta prima della definizione e di classe e di " "eredità." +msgid "" +"Mark the following statement to ignore the specified [param warning]. See " +"[url=$DOCS_URL/tutorials/scripting/gdscript/warning_system.html]GDScript " +"warning system[/url].\n" +"[codeblock]\n" +"func test():\n" +" print(\"hello\")\n" +" return\n" +" @warning_ignore(\"unreachable_code\")\n" +" print(\"unreachable\")\n" +"[/codeblock]\n" +"See also [annotation @warning_ignore_start] and [annotation " +"@warning_ignore_restore]." +msgstr "" +"Segna la seguente dichiarazione per ignorare l'avviso specificato da [param " +"warning]. Vedi [url=$DOCS_URL/tutorials/scripting/gdscript/warning_system." +"html]Sistema di avvisi di GDScript[/url].\n" +"[codeblock]\n" +"func test():\n" +" print(\"ciao\")\n" +" return\n" +" @warning_ignore(\"unreachable_code\")\n" +" print(\"non raggiungibile\")\n" +"[/codeblock]\n" +"Vedi anche [annotation @warning_ignore_start] and [annotation " +"@warning_ignore_restore]." + +msgid "" +"Stops ignoring the listed warning types after [annotation " +"@warning_ignore_start]. Ignoring the specified warning types will be reset to " +"Project Settings. This annotation can be omitted to ignore the warning types " +"until the end of the file.\n" +"[b]Note:[/b] Unlike most other annotations, arguments of the [annotation " +"@warning_ignore_restore] annotation must be string literals (constant " +"expressions are not supported)." +msgstr "" +"Smette di ignorare i tipi di avviso elencati dopo [annotation " +"@warning_ignore_start]. Ciò sarà reimpostato sulle Impostazioni del progetto. " +"È possibile omettere questa annotazione per ignorare i tipi di avviso fino " +"alla fine del file.\n" +"[b]Nota:[/b] A differenza della maggior parte delle altre annotazioni, gli " +"argomenti dell'annotazione [annotation @warning_ignore_restore] devono essere " +"stringhe letterali (le espressioni costanti non sono supportate)." + +msgid "" +"Starts ignoring the listed warning types until the end of the file or the " +"[annotation @warning_ignore_restore] annotation with the given warning type.\n" +"[codeblock]\n" +"func test():\n" +" var a = 1 # Warning (if enabled in the Project Settings).\n" +" @warning_ignore_start(\"unused_variable\")\n" +" var b = 2 # No warning.\n" +" var c = 3 # No warning.\n" +" @warning_ignore_restore(\"unused_variable\")\n" +" var d = 4 # Warning (if enabled in the Project Settings).\n" +"[/codeblock]\n" +"[b]Note:[/b] To suppress a single warning, use [annotation @warning_ignore] " +"instead.\n" +"[b]Note:[/b] Unlike most other annotations, arguments of the [annotation " +"@warning_ignore_start] annotation must be string literals (constant " +"expressions are not supported)." +msgstr "" +"Comincia a ignorare i tipi di avviso elencati fino alla fine del file o " +"dell'annotazione [annotation @warning_ignore_restore] con il tipo di avviso " +"specificato.\n" +"[codeblock]\n" +"func test():\n" +" var a = 1 # Avviso (se abilitato nelle Impostazioni del progetto).\n" +" @warning_ignore_start(\"unused_variable\")\n" +" var b = 2 # Nessun avviso.\n" +" var c = 3 # Nessun avviso.\n" +" @warning_ignore_restore(\"unused_variable\")\n" +" var d = 4 # Avviso (se abilitato nelle Impostazioni del progetto).\n" +"[/codeblock]\n" +"[b]Nota:[/b] Per sopprimere un singolo avviso, usa invece [annotation " +"@warning_ignore].\n" +"[b]Nota:[/b] A differenza della maggior parte delle altre annotazioni, gli " +"argomenti dell'annotazione [annotation @warning_ignore_restore] devono essere " +"stringhe letterali (le espressioni costanti non sono supportate)." + msgid "Global scope constants and functions." msgstr "Costanti e funzioni di ambito globale." +msgid "" +"A list of global scope enumerated constants and built-in functions. This is " +"all that resides in the globals, constants regarding error codes, keycodes, " +"property hints, etc.\n" +"Singletons are also documented here, since they can be accessed from " +"anywhere.\n" +"For the entries that can only be accessed from scripts written in GDScript, " +"see [@GDScript]." +msgstr "" +"Una lista di costanti enumerate e funzioni di ambito globale. Questo è tutto " +"ciò che risiede nei globali, le costanti riguardano gli errori di codice, " +"keycode, suggerimenti di proprietà, ecc...\n" +"Anche i singleton sono documentati qui, visto che sono accessibili da " +"ovunque.\n" +"Per le voci a cui è possibile accedere da ogni script scritto in GDScript, " +"vedi [@GDScript]." + msgid "Random number generation" msgstr "Generazione di numeri casuali" @@ -1646,6 +2275,17 @@ msgstr "" "var b = acosh(-1) # Restituisce 0\n" "[/codeblock]" +msgid "" +"Returns the difference between the two angles (in radians), in the range of " +"[code][-PI, +PI][/code]. When [param from] and [param to] are opposite, " +"returns [code]-PI[/code] if [param from] is smaller than [param to], or " +"[code]PI[/code] otherwise." +msgstr "" +"Restituisce la differenza tra i due angoli (in radianti), nell'intervallo " +"[code][-PI, +PI][/code]. Quando [param from] e [param to] sono opposti, " +"restituisce [code]-PI[/code] se [param from] è minore di [param to], o " +"[code]PI[/code] altrimenti." + msgid "" "Returns the arc sine of [param x] in radians. Use to get the angle of sine " "[param x]. [param x] will be clamped between [code]-1.0[/code] and [code]1.0[/" @@ -2003,6 +2643,61 @@ msgstr "" "var r = deg_to_rad(180) # r è 3.141593\n" "[/codeblock]" +msgid "" +"Returns an \"eased\" value of [param x] based on an easing function defined " +"with [param curve]. This easing function is based on an exponent. The [param " +"curve] can be any floating-point number, with specific values leading to the " +"following behaviors:\n" +"[codeblock lang=text]\n" +"- Lower than -1.0 (exclusive): Ease in-out\n" +"- -1.0: Linear\n" +"- Between -1.0 and 0.0 (exclusive): Ease out-in\n" +"- 0.0: Constant\n" +"- Between 0.0 to 1.0 (exclusive): Ease out\n" +"- 1.0: Linear\n" +"- Greater than 1.0 (exclusive): Ease in\n" +"[/codeblock]\n" +"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/" +"ease_cheatsheet.png]ease() curve values cheatsheet[/url]\n" +"See also [method smoothstep]. If you need to perform more advanced " +"transitions, use [method Tween.interpolate_value]." +msgstr "" +"Restituisce un valore \"allentato\" di [param x] basato su una funzione di " +"allentamento definita con [param curve]. Questa funzione è basata su un " +"esponente. [param curve] può essere qualunque numero decimale, con valori " +"specifici che portano ai seguenti comportamenti:\n" +"[codeblock lang=text]\n" +"- Minore di -1.0 (esclusi): Ease in-out\n" +"- 1.0: Lineare\n" +"- Compreso tra -1.0 and 0.0 (esclusi): Ease out-in\n" +"- 0.0: Costante\n" +"- Compreso tra 0.0 to 1.0 (esclusi): Ease in\n" +"- 1.0: Lineare\n" +"- Maggiore di 1.0 (esclusi): Ease out\n" +"[/codeblock]\n" +"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/" +"ease_cheatsheet.png]cheatsheet per i valori di curva di ease()[/url]\n" +"Vedi anche [method smoothstep]. Se hai bisogno di eseguire transizioni più " +"avanzate, usa [Tween.interpolate_value]." + +msgid "" +"Returns a human-readable name for the given [enum Error] code.\n" +"[codeblock]\n" +"print(OK) # Prints 0\n" +"print(error_string(OK)) # Prints \"OK\"\n" +"print(error_string(ERR_BUSY)) # Prints \"Busy\"\n" +"print(error_string(ERR_OUT_OF_MEMORY)) # Prints \"Out of memory\"\n" +"[/codeblock]" +msgstr "" +"Restituisce un nome leggibile in chiaro per il codice di errore ([enum " +"Error]) indicato.\n" +"[codeblock]\n" +"print(OK) # Stampa 0\n" +"print(error_string(OK)) # Stampa \"OK\"\n" +"print(error_string(ERR_BUSY)) # Stampa \"Busy\"\n" +"print(error_string(ERR_OUT_OF_MEMORY)) # Stampa \"Out of memory\"\n" +"[/codeblock]" + msgid "" "The natural exponential function. It raises the mathematical constant [i]e[/" "i] to the power of [param x] and returns it.\n" @@ -2147,6 +2842,60 @@ msgstr "" "[/csharp]\n" "[/codeblocks]" +msgid "" +"Returns the [Object] that corresponds to [param instance_id]. All Objects " +"have a unique instance ID. See also [method Object.get_instance_id].\n" +"[codeblocks]\n" +"[gdscript]\n" +"var drink = \"water\"\n" +"\n" +"func _ready():\n" +" var id = get_instance_id()\n" +" var instance = instance_from_id(id)\n" +" print(instance.foo) # Prints \"water\"\n" +"[/gdscript]\n" +"[csharp]\n" +"public partial class MyNode : Node\n" +"{\n" +" public string Drink { get; set; } = \"water\";\n" +"\n" +" public override void _Ready()\n" +" {\n" +" ulong id = GetInstanceId();\n" +" var instance = (MyNode)InstanceFromId(Id);\n" +" GD.Print(instance.Drink); // Prints \"water\"\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"Restituisce l'istanza di [Object] che corrisponde a [param instance_id]. " +"Tutti gli oggetti hanno un ID univoco d'istanza. Vedi anche [method Object." +"get_instance_id].\n" +"[codeblocks]\n" +"[gdscript]\n" +"var bevanda = \"acqua\"\n" +"\n" +"func _ready():\n" +" var id = get_instance_id()\n" +" var inst = instance_from_id(id)\n" +" print(inst.bevanda) # Stampa \"acqua\"\n" +"[/gdscript]\n" +"[csharp]\n" +"public partial class MyNode : Node\n" +"{\n" +" public string Bevanda { get; set; } = \"acqua\";\n" +"\n" +" public override void _Ready()\n" +" {\n" +" ulong id = GetInstanceId();\n" +" var inst = (MyNode)InstanceFromId(Id);\n" +" GD.Print(inst.Bevanda); // Stampa \"acqua\"\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + msgid "" "Returns an interpolation or extrapolation factor considering the range " "specified in [param from] and [param to], and the interpolated value " @@ -2227,7 +2976,7 @@ msgid "" msgstr "" "Restituisce [code]true[/code] se l'oggetto che corrisponde a [param id] è un " "oggetto valido (ad esempio, non è stato eliminato dalla memoria). Tutti gli " -"oggetti hanno un ID unico di istanza." +"oggetti hanno un ID univoco d'istanza." msgid "" "Returns [code]true[/code] if [param instance] is a valid Object (e.g. has not " @@ -2313,6 +3062,48 @@ msgstr "" "Questo metodo è più veloce di [method is_equal_approx] con uno dei valori " "impostati a zero." +msgid "" +"Linearly interpolates between two values by the factor defined in [param " +"weight]. To perform interpolation, [param weight] should be between " +"[code]0.0[/code] and [code]1.0[/code] (inclusive). However, values outside " +"this range are allowed and can be used to perform [i]extrapolation[/i]. If " +"this is not desired, use [method clampf] to limit [param weight].\n" +"Both [param from] and [param to] must be the same type. Supported types: " +"[int], [float], [Vector2], [Vector3], [Vector4], [Color], [Quaternion], " +"[Basis], [Transform2D], [Transform3D].\n" +"[codeblock]\n" +"lerp(0, 4, 0.75) # Returns 3.0\n" +"[/codeblock]\n" +"See also [method inverse_lerp] which performs the reverse of this operation. " +"To perform eased interpolation with [method lerp], combine it with [method " +"ease] or [method smoothstep]. See also [method remap] to map a continuous " +"series of values to another.\n" +"[b]Note:[/b] For better type safety, use [method lerpf], [method Vector2." +"lerp], [method Vector3.lerp], [method Vector4.lerp], [method Color.lerp], " +"[method Quaternion.slerp], [method Basis.slerp], [method Transform2D." +"interpolate_with], or [method Transform3D.interpolate_with]." +msgstr "" +"Interpola linearmente tra due valori con un fattore definito in [param " +"weight]. Per interpolare, [param weight] dovrebbe rimanere tra [code]0.0[/" +"code] e [code]1.0[/code] (inclusi). Tuttavia, i valori al di fuori di questo " +"intervallo sono consentiti e possono essere utilizzati per eseguire " +"un'[i]estrapolazione[/i]. Se non è desiderato, utilizza [method clamp] sul " +"risultato di questa funzione.\n" +"Sia [param from] che [param to] devono essere dello stesso tipo. I tipi " +"supported sono: [int], [float], [Vector2], [Vector3], [Vector4], [Color], " +"[Quaternion], [Basis], [Transform2D], [Transform3D].\n" +"[codeblock]\n" +"lerp(0, 4, 0.75) # Restituisce 3.0\n" +"[/codeblock]\n" +"Vedi anche [method inverse_lerp] che esegue l'inverso di questa operazione. " +"Per eseguire un'interpolazione alleggerita con [method lerp], combinalo con " +"[method ease] o [method smoothstep]. Vedi anche [method remap] per mappare " +"una serie continua di valori a un altra.\n" +"[b]Nota:[/b] Per migliore sicurezza di tipo, usa [method lerpf], [method " +"Vector2.lerp], [method Vector3.lerp], [method Vector4.lerp], [method Color." +"lerp], [method Quaternion.slerp], [method Basis.slerp], [method Transform2D." +"interpolate_with], o [method Transform3D.interpolate_with]." + msgid "" "Linearly interpolates between two angles (in radians) by a [param weight] " "value between 0.0 and 1.0.\n" @@ -2383,6 +3174,27 @@ msgstr "" "Per eseguire un'interpolazione alleggerita con [method lerp], combinalo con " "[method ease] o [method smoothstep]." +msgid "" +"Converts from linear energy to decibels (audio). Since volume is not normally " +"linear, this can be used to implement volume sliders that behave as " +"expected.\n" +"[b]Example:[/b] Change the Master bus's volume through a [Slider] node, which " +"ranges from [code]0.0[/code] to [code]1.0[/code]:\n" +"[codeblock]\n" +"AudioServer.set_bus_volume_db(AudioServer.get_bus_index(\"Master\"), " +"linear_to_db($Slider.value))\n" +"[/codeblock]" +msgstr "" +"Converte da energia lineare in decibel (audio). Siccome il volume non è " +"lineare, può essere usato per implementare gli slider del volume che si " +"comportano come ci si aspetta.\n" +"[b]Esempio:[/b] Modifica il volume del bus Master tramite un nodo [Slider], " +"che va da [code]0.0[/code] a [code]1.0[/code]:\n" +"[codeblock]\n" +"AudioServer.set_bus_volume_db(AudioServer.get_bus_index(\"Master\"), " +"linear_to_db($Slider.value))\n" +"[/codeblock]" + msgid "" "Returns the [url=https://en.wikipedia.org/wiki/Natural_logarithm]natural " "logarithm[/url] of [param x] (base [url=https://en.wikipedia.org/wiki/" @@ -2655,6 +3467,119 @@ msgstr "" "pow(4, 1.5) # Restituisce 8.0\n" "[/codeblock]" +msgid "" +"Converts one or more arguments of any type to string in the best way possible " +"and prints them to the console.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var a = [1, 2, 3]\n" +"print(\"a\", \"b\", a) # Prints \"ab[1, 2, 3]\"\n" +"[/gdscript]\n" +"[csharp]\n" +"Godot.Collections.Array a = [1, 2, 3];\n" +"GD.Print(\"a\", \"b\", a); // Prints \"ab[1, 2, 3]\"\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] Consider using [method push_error] and [method push_warning] to " +"print error and warning messages instead of [method print] or [method " +"print_rich]. This distinguishes them from print messages used for debugging " +"purposes, while also displaying a stack trace when an error or warning is " +"printed. See also [member Engine.print_to_stdout] and [member ProjectSettings." +"application/run/disable_stdout]." +msgstr "" +"Converte uno o più argomenti di qualunque tipo in una stringa e li stampa " +"nella console.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var a = [1, 2, 3]\n" +"print(\"a\", \"b\", a) # Stampa \"ab[1, 2, 3]\"\n" +"[/gdscript]\n" +"[csharp]\n" +"var a = new Godot.Collections.Array { 1, 2, 3 };\n" +"GD.Print(\"a\", \"b\", a); // Stampa \"ab[1, 2, 3]\"\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Nota:[/b] Valuta l'utilizzo di [method push_error] e [method push_warning] " +"per stampare messaggi di errore e di avviso invece di utilizzare [method " +"print]. Questo consente di distinguerli dai messaggi di debug, mostrando " +"inoltre uno stack trace quando viene stampato un errore o un'avviso. Vedi " +"anche [member Engine.print_to_stdout] e [member ProjectSettings.application/" +"run/disable_stdout]." + +msgid "" +"Converts one or more arguments of any type to string in the best way possible " +"and prints them to the console.\n" +"The following BBCode tags are supported: [code]b[/code], [code]i[/code], " +"[code]u[/code], [code]s[/code], [code]indent[/code], [code]code[/code], " +"[code]url[/code], [code]center[/code], [code]right[/code], [code]color[/" +"code], [code]bgcolor[/code], [code]fgcolor[/code].\n" +"URL tags only support URLs wrapped by a URL tag, not URLs with a different " +"title.\n" +"When printing to standard output, the supported subset of BBCode is converted " +"to ANSI escape codes for the terminal emulator to display. Support for ANSI " +"escape codes varies across terminal emulators, especially for italic and " +"strikethrough. In standard output, [code]code[/code] is represented with " +"faint text but without any font change. Unsupported tags are left as-is in " +"standard output.\n" +"[codeblocks]\n" +"[gdscript skip-lint]\n" +"print_rich(\"[color=green][b]Hello world![/b][/color]\") # Prints \"Hello " +"world!\", in green with a bold font.\n" +"[/gdscript]\n" +"[csharp skip-lint]\n" +"GD.PrintRich(\"[color=green][b]Hello world![/b][/color]\"); // Prints \"Hello " +"world!\", in green with a bold font.\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] Consider using [method push_error] and [method push_warning] to " +"print error and warning messages instead of [method print] or [method " +"print_rich]. This distinguishes them from print messages used for debugging " +"purposes, while also displaying a stack trace when an error or warning is " +"printed.\n" +"[b]Note:[/b] On Windows, only Windows 10 and later correctly displays ANSI " +"escape codes in standard output.\n" +"[b]Note:[/b] Output displayed in the editor supports clickable [code skip-" +"lint][url=address]text[/url][/code] tags. The [code skip-lint][url][/code] " +"tag's [code]address[/code] value is handled by [method OS.shell_open] when " +"clicked." +msgstr "" +"Converte uno o più argomenti di qualsiasi tipo in stringa nel miglior modo " +"possibile e li stampa nella console.\n" +"I seguenti tag BBCode sono supportati: [code]b[/code], [code]i[/code], " +"[code]u[/code], [code]s[/code], [code]indent[/code], [code]code[/code], " +"[code]url[/code], [code]center[/code], [code]right[/code], [code]color[/" +"code], [code]bgcolor[/code], [code]fgcolor[/code].\n" +"Le tag URL supportano solo gli URL avvolti da un tag URL, non URL con un " +"titolo diverso.\n" +"Quando si stampa all'output standard, il sottoinsieme supportato di BBCode " +"viene convertito in codici di escape ANSI da visualizzare per l'emulatore del " +"terminale. Il supporto per i codici di escape ANSI varia tra diversi " +"emulatori di terminali, soprattutto per il corsivo e la barratura. " +"Nell'output standard, [code]code[/code] è rappresentato con testo schiarito " +"ma senza alcun cambiamento di caratteri. I tag non supportati vengono " +"lasciati così come sono nell'output standard.\n" +"[codeblocks]\n" +"[gdscript skip-lint]\n" +"print_rich(\"[color=green][b]Ciao mondo![/b][/color]\") # Stampa \"Ciao mondo!" +"\", in verde con caratteri in grassetto\n" +"[/gdscript]\n" +"[csharp skip-lint]\n" +"GD.PrintRich(\"[color=green][b]Ciao mondo![/b][/color]\"); // Stampa \"Ciao " +"mondo!\", in verde con caratteri in grassetto\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Nota:[/b] Considera l'utilizzo di [method push_error] e di [method " +"push_warning] per stampare messaggi di errore e di avviso invece di [method " +"print] o [method print_rich]. Ciò li distingue dai messaggi stampati usati " +"per scopi di debug, e visualizzano anche una traccia di stack quando viene " +"stampato un errore o un avviso.\n" +"[b]Nota:[/b] Su Windows, solo da Windows 10 in poi i codici di escape ANSI " +"sull'output standard sono visualizzati correttamente .\n" +"[b]Nota:[/b] L'output visualizzato nell'editor supporta tag cliccabili [code " +"skip-lint][url=address]text[/url][/code][code]. Il valore di [code]address[/" +"code] del tag [code skip-lint][url][/code] viene gestito da [method OS." +"shell_open] al clic." + msgid "" "If verbose mode is enabled ([method OS.is_stdout_verbose] returning " "[code]true[/code]), converts one or more arguments of any type to string in " @@ -2687,6 +3612,155 @@ msgstr "" "[/csharp]\n" "[/codeblocks]" +msgid "" +"Prints one or more arguments to strings in the best way possible to the OS " +"terminal. Unlike [method print], no newline is automatically added at the " +"end.\n" +"[b]Note:[/b] The OS terminal is [i]not[/i] the same as the editor's Output " +"dock. The output sent to the OS terminal can be seen when running Godot from " +"a terminal. On Windows, this requires using the [code]console.exe[/code] " +"executable.\n" +"[codeblocks]\n" +"[gdscript]\n" +"# Prints \"ABC\" to terminal.\n" +"printraw(\"A\")\n" +"printraw(\"B\")\n" +"printraw(\"C\")\n" +"[/gdscript]\n" +"[csharp]\n" +"// Prints \"ABC\" to terminal.\n" +"GD.PrintRaw(\"A\");\n" +"GD.PrintRaw(\"B\");\n" +"GD.PrintRaw(\"C\");\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"Stampa uno o più argomenti come stringhe nel miglior modo possibile sulla " +"linea di errore standard. A differenza di [method print], nessuna nuova linea " +"viene automaticamente aggiunta alla fine.\n" +"[b]Nota:[/b] Il terminale del sistema operativo [i]not[/i] è lo stesso del " +"pannello di output dell'editor. È possibile vedere l'output inviato al " +"terminale del sistema operativo quando Godot è eseguito dal terminale. Su " +"Windows, ciò richiede l'utilizzo dell'eseguibile [code]console.exe[/code] .\n" +"[codeblocks]\n" +"[gdscript]\n" +"printraw(\"A\")\n" +"printraw(\"B\")\n" +"printraw(\"C\")\n" +"# Stampa \"ABC\" sul terminale\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PrintRaw(\"A\");\n" +"GD.PrintRaw(\"B\");\n" +"GD.PrintRaw(\"C\");\n" +"// Stampa \"ABC\" sul terminale\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Prints one or more arguments to the console with a space between each " +"argument.\n" +"[codeblocks]\n" +"[gdscript]\n" +"prints(\"A\", \"B\", \"C\") # Prints \"A B C\"\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PrintS(\"A\", \"B\", \"C\"); // Prints \"A B C\"\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"Stampa uno o più argomenti sulla console con uno spazio tra ogni argomento.\n" +"[codeblocks]\n" +"[gdscript]\n" +"prints(\"A\", \"B\", \"C\") # Stampa \"A B C\"\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PrintS(\"A\", \"B\", \"C\"); // Stampa \"A B C\"\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Prints one or more arguments to the console with a tab between each " +"argument.\n" +"[codeblocks]\n" +"[gdscript]\n" +"printt(\"A\", \"B\", \"C\") # Prints \"A B C\"\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PrintT(\"A\", \"B\", \"C\"); // Prints \"A B C\"\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"Stampa uno o più argomenti sulla console con una tabulazione tra ogni " +"argomento.\n" +"[codeblocks]\n" +"[gdscript]\n" +"printt(\"A\", \"B\", \"C\") # Stampa \"A B C\"\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PrintT(\"A\", \"B\", \"C\"); // Stampa \"A B C\"\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Pushes an error message to Godot's built-in debugger and to the OS terminal.\n" +"[codeblocks]\n" +"[gdscript]\n" +"push_error(\"test error\") # Prints \"test error\" to debugger and terminal " +"as an error.\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PushError(\"test error\"); // Prints \"test error\" to debugger and " +"terminal as an error.\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] This function does not pause project execution. To print an " +"error message and pause project execution in debug builds, use " +"[code]assert(false, \"test error\")[/code] instead." +msgstr "" +"Manda un messaggio di errore al debugger integrato di Godot e al terminale " +"del sistema operativo.\n" +"[codeblocks]\n" +"[gdscript]\n" +"push_error(\"errore di prova\") # Stampa \"errore di prova\" nel debugger e " +"nel terminale come errore.\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PushError(\"errore di prova\"); // Stampa \"errore di prova\" nel debugger " +"e nel terminale come errore.\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Nota:[/b] Questo funzione non interrompe l'esecuzione del progetto. Per " +"stampare un messaggio e mettere in pausa l'esecuzione nelle build di debug, " +"usa invece [code]assert(false, \"test error\")[/code]." + +msgid "" +"Pushes a warning message to Godot's built-in debugger and to the OS " +"terminal.\n" +"[codeblocks]\n" +"[gdscript]\n" +"push_warning(\"test warning\") # Prints \"test warning\" to debugger and " +"terminal as a warning.\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PushWarning(\"test warning\"); // Prints \"test warning\" to debugger and " +"terminal as a warning.\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"Manda un messaggio di avviso al debugger integrato di Godot e al terminale " +"del sistema operativo.\n" +"[codeblocks]\n" +"[gdscript]\n" +"push_warning(\"avviso di prova\") # Stampa \"avviso di prova\" nel debugger e " +"nel terminale come avviso.\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PushWarning(\"avviso di prova\"); // Stampa \"avviso di prova\" nel " +"debugger e nel terminale come avviso.\n" +"[/csharp]\n" +"[/codeblocks]" + msgid "" "Converts an angle expressed in radians to degrees.\n" "[codeblock]\n" @@ -2702,6 +3776,33 @@ msgstr "" "rad_to_deg(PI * 2) # Restituisce 360\n" "[/codeblock]" +msgid "" +"Given a [param seed], returns a [PackedInt64Array] of size [code]2[/code], " +"where its first element is the randomized [int] value, and the second element " +"is the same as [param seed]. Passing the same [param seed] consistently " +"returns the same array.\n" +"[b]Note:[/b] \"Seed\" here refers to the internal state of the pseudo random " +"number generator, currently implemented as a 64 bit integer.\n" +"[codeblock]\n" +"var a = rand_from_seed(4)\n" +"\n" +"print(a[0]) # Prints 2879024997\n" +"print(a[1]) # Prints 4\n" +"[/codeblock]" +msgstr "" +"Dato un [param seed], restituisce un [PackedInt64Array] di dimensione " +"[code]2[/code], dove il suo primo elemento è il valore [int] randomizzato, e " +"il secondo elemento è lo stesso di [param seed]. Passando lo stesso [param " +"seed] restituisce costantemente lo stesso array.\n" +"[b]Nota:[/b] \"Seed\" qui si riferisce allo stato interno del generatore di " +"numeri pseudocasuali, attualmente implementato come un intero a 64 bit.\n" +"[codeblock]\n" +"var a = rand_from_seed(4)\n" +"\n" +"print(a[0]) # Stampa 2879024997\n" +"print(a[1]) # Stampa 4\n" +"[/codeblock]" + msgid "" "Returns a random floating-point value between [code]0.0[/code] and [code]1.0[/" "code] (inclusive).\n" @@ -3051,6 +4152,23 @@ msgstr "" "signf(NAN) # Restituisce 0.0\n" "[/codeblock]" +msgid "" +"Returns [code]-1[/code] if [param x] is negative, [code]1[/code] if [param x] " +"is positive, and [code]0[/code] if [param x] is zero.\n" +"[codeblock]\n" +"signi(-6) # Returns -1\n" +"signi(0) # Returns 0\n" +"signi(6) # Returns 1\n" +"[/codeblock]" +msgstr "" +"Restituisce [code]-1[/code] se [param x] è negativo, [code]1[/code] se [param " +"x] è positivo, e [code]0[/code] se [param x] è zero.\n" +"[codeblock]\n" +"signi(-6) # Restituisce -1\n" +"signi(0) # Restituisce 0\n" +"signi(6) # Restituisce 1\n" +"[/codeblock]" + msgid "" "Returns the sine of angle [param angle_rad] in radians.\n" "[codeblock]\n" @@ -3077,6 +4195,65 @@ msgstr "" "sinh(a) # Restituisce 0.75\n" "[/codeblock]" +msgid "" +"Returns a smooth cubic Hermite interpolation between [code]0[/code] and " +"[code]1[/code].\n" +"For positive ranges (when [code]from <= to[/code]) the return value is " +"[code]0[/code] when [code]x <= from[/code], and [code]1[/code] when [code]x " +">= to[/code]. If [param x] lies between [param from] and [param to], the " +"return value follows an S-shaped curve that smoothly transitions from " +"[code]0[/code] to [code]1[/code].\n" +"For negative ranges (when [code]from > to[/code]) the function is mirrored " +"and returns [code]1[/code] when [code]x <= to[/code] and [code]0[/code] when " +"[code]x >= from[/code].\n" +"This S-shaped curve is the cubic Hermite interpolator, given by [code]f(y) = " +"3*y^2 - 2*y^3[/code] where [code]y = (x-from) / (to-from)[/code].\n" +"[codeblock]\n" +"smoothstep(0, 2, -5.0) # Returns 0.0\n" +"smoothstep(0, 2, 0.5) # Returns 0.15625\n" +"smoothstep(0, 2, 1.0) # Returns 0.5\n" +"smoothstep(0, 2, 2.0) # Returns 1.0\n" +"[/codeblock]\n" +"Compared to [method ease] with a curve value of [code]-1.6521[/code], [method " +"smoothstep] returns the smoothest possible curve with no sudden changes in " +"the derivative. If you need to perform more advanced transitions, use [Tween] " +"or [AnimationPlayer].\n" +"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/" +"smoothstep_ease_comparison.png]Comparison between smoothstep() and ease(x, " +"-1.6521) return values[/url]\n" +"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/" +"smoothstep_range.webp]Smoothstep() return values with positive, zero, and " +"negative ranges[/url]" +msgstr "" +"Restituisce un'interpolazione regolare cubica di Hermite [code]0[/code] e " +"[code]1[/code].\n" +"Per intervalli positivi (quando [code]s <= from[/code]) il valore restituito " +"è [code]0[/code] quando [code]x <= to[/code] e [code]1[/code] quando [code]x " +">= to[/code]. Se [param x] è compreso tra [param from] e [param to], il " +"valore restituito seguirà una curva a forma di S che passa gradualmente tra " +"[code]0[/code] e [code]1[/code].\n" +"Per intervalli negativi (quando [code]from > to[/code]) la funzione è " +"invertita e restituisce [code]1[/code] quando [code]x <= to[/code] e [code]0[/" +"code] quando [code]x >= from[/code].\n" +"La curva a forma di S è l'interpolatore cubico di Hermite, dato da [code]f(y) " +"= 3*y^2 - 2*y^3[/code] dove [code]y = (x-from) / (to-from)[/code].\n" +"[codeblock]\n" +"smoothstep(0, 2, -5.0) # Restituisce 0.0\n" +"smoothstep(0, 2, 0.5) # Restituisce 0.15625\n" +"smoothstep(0, 2, 1.0) # Restituisce 0.5\n" +"smoothstep(0, 2, 2.0) # Restituisce 1.0\n" +"[/codeblock]\n" +"Rispetto a [method ease] con un valore di curva di [code]-1.6521[/code], " +"[method smoothstep] restituisce la curva più regolare possibile senza " +"improvvisi cambiamenti sulla derivata. Se hai bisogno di effettuare " +"transizioni più avanzate, usa [Tween] o [AnimationPlayer].\n" +"[url=https://raw.githubusercontent.com/godotengine/godot-docs/3.5/img/" +"smoothstep_ease_comparison.png]Confronto dei valori di ritorno tra " +"smoothstep() e ease(x, -1.6521)[/url]\n" +"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/" +"smoothstep_range.webp]Valori restituiti da smoothstep() con intervalli " +"positivi, negativi o pari a zero[/url]" + msgid "" "Returns the multiple of [param step] that is the closest to [param x]. This " "can also be used to round a floating-point number to an arbitrary number of " @@ -3302,6 +4479,52 @@ msgstr "" "type_convert(\"Hi!\", TYPE_NIL) # Restituisce null\n" "[/codeblock]" +msgid "" +"Returns a human-readable name of the given [param type], using the [enum " +"Variant.Type] values.\n" +"[codeblock]\n" +"print(TYPE_INT) # Prints 2\n" +"print(type_string(TYPE_INT)) # Prints \"int\"\n" +"print(type_string(TYPE_STRING)) # Prints \"String\"\n" +"[/codeblock]\n" +"See also [method typeof]." +msgstr "" +"Restituisce un nome leggibile in chiaro del tipo fornito [param type], " +"attraverso i valori di [enum Variant.Type].\n" +"[codeblock]\n" +"print(TYPE_INT) # Stampa 2\n" +"print(type_string(TYPE_INT)) # Stampa \"int\"\n" +"print(type_string(TYPE_STRING)) # Stampa \"String\"\n" +"[/codeblock]\n" +"Vedi anche [method typeof]." + +msgid "" +"Returns the internal type of the given [param variable], using the [enum " +"Variant.Type] values.\n" +"[codeblock]\n" +"var json = JSON.new()\n" +"json.parse('[\"a\", \"b\", \"c\"]')\n" +"var result = json.get_data()\n" +"if result is Array:\n" +" print(result[0]) # Prints \"a\"\n" +"else:\n" +" print(\"Unexpected result!\")\n" +"[/codeblock]\n" +"See also [method type_string]." +msgstr "" +"Restituisce il tipo interno della variabile fornita [param variable], " +"attraverso i valori di [enum Variant.Type].\n" +"[codeblock]\n" +"var json = JSON.new()\n" +"json.parse('[\"a\", \"b\", \"c\"]')\n" +"var result = json.get_data()\n" +"if result is Array:\n" +" print(result[0]) # Stampa \"a\"\n" +"else:\n" +" print(\"Risultato inaspettato!\")\n" +"[/codeblock]\n" +"Vedi anche [method type_string]." + msgid "" "Encodes a [Variant] value to a byte array, without encoding objects. " "Deserialization can be done with [method bytes_to_var].\n" @@ -4135,12 +5358,24 @@ msgstr "Tasto hyper (solo su Linux/X11)." msgid "Help key." msgstr "Tasto help." +msgid "Back key." +msgstr "Tasto indietro." + +msgid "Forward key." +msgstr "Tasto avanti." + msgid "Media stop key." -msgstr "Tasto Ferma media." +msgstr "Tasto ferma media." + +msgid "Refresh key." +msgstr "Tasto ricarica." msgid "Volume down key." msgstr "Tasto di abbassamento del volume." +msgid "Mute volume key." +msgstr "Tasto per silenziare il volume." + msgid "Volume up key." msgstr "Tasto di alzamento del volume." @@ -4238,11 +5473,56 @@ msgid "かな key on Mac keyboard." msgstr "Tasto かな su una tastiera Mac." msgid "Unknown key." -msgstr "Tasto Sconosciuto." +msgstr "Tasto sconosciuto." msgid "Space key." msgstr "Tasto spazio (la barra spaziatrice)." +msgid "Exclamation mark ([code]![/code]) key." +msgstr "Tasto punto esclamativo ([code]![/code])." + +msgid "Double quotation mark ([code]\"[/code]) key." +msgstr "Tasto virgolette doppie ([code]\"[/code])." + +msgid "Number sign or [i]hash[/i] ([code]#[/code]) key." +msgstr "Tasto cancelletto o [i]hash[/i] ([code]#[/code])." + +msgid "Dollar sign ([code]$[/code]) key." +msgstr "Tasto simbolo del dollaro ([code]$[/code])." + +msgid "Percent sign ([code]%[/code]) key." +msgstr "Tasto simbolo di percentuale ([code]%[/code])." + +msgid "Ampersand ([code]&[/code]) key." +msgstr "Tasto \"e\" commerciale ([code]%[/code])." + +msgid "Apostrophe ([code]'[/code]) key." +msgstr "Tasto apostrofo ([code]'[/code])." + +msgid "Left parenthesis ([code]([/code]) key." +msgstr "Tasto parentesi tonda aperta ([code]([/code])." + +msgid "Right parenthesis ([code])[/code]) key." +msgstr "Tasto parentesi tonda chiusa ([code])[/code])." + +msgid "Asterisk ([code]*[/code]) key." +msgstr "Tasto asterisco ([code]*[/code])." + +msgid "Plus ([code]+[/code]) key." +msgstr "Tasto simbolo più ([code]+[/code])." + +msgid "Comma ([code],[/code]) key." +msgstr "Tasto virgola ([code],[/code])." + +msgid "Minus ([code]-[/code]) key." +msgstr "Tasto simbolo meno ([code]-[/code])." + +msgid "Period ([code].[/code]) key." +msgstr "Tasto punto ([code].[/code])." + +msgid "Slash ([code]/[/code]) key." +msgstr "Tasto barra ([code]/[/code])." + msgid "Number 0 key." msgstr "Tasto numero 0." @@ -4273,6 +5553,27 @@ msgstr "Tasto numero 8." msgid "Number 9 key." msgstr "Tasto numero 9." +msgid "Colon ([code]:[/code]) key." +msgstr "Tasto due punti ([code]:[/code])." + +msgid "Semicolon ([code];[/code]) key." +msgstr "Tasto punto e virgola ([code];[/code])." + +msgid "Less-than sign ([code]<[/code]) key." +msgstr "Tasto simbolo di minore ([code]<[/code])." + +msgid "Equal sign ([code]=[/code]) key." +msgstr "Tasto simbolo di uguale ([code]=[/code])." + +msgid "Greater-than sign ([code]>[/code]) key." +msgstr "Tasto simbolo di maggiore ([code]>[/code])." + +msgid "Question mark ([code]?[/code]) key." +msgstr "Tasto punto interrogativo ([code]?[/code])." + +msgid "At sign ([code]@[/code]) key." +msgstr "Tasto chiocciola o \"a\" commerciale ([code]@[/code])." + msgid "A key." msgstr "Tasto A." @@ -4351,6 +5652,42 @@ msgstr "Tasto Y." msgid "Z key." msgstr "Tasto Z." +msgid "Left bracket ([code][lb][/code]) key." +msgstr "Tasto parentesi quadra aperta ([code][lb][/code])." + +msgid "Backslash ([code]\\[/code]) key." +msgstr "Tasto barra rovesciata ([code]\\[/code])." + +msgid "Right bracket ([code][rb][/code]) key." +msgstr "Tasto parentesi quadra chiusa ([code][rb][/code])." + +msgid "Caret ([code]^[/code]) key." +msgstr "Tasto accento circonflesso ([code]^[/code])." + +msgid "Underscore ([code]_[/code]) key." +msgstr "Tasto trattino basso ([code]_[/code])." + +msgid "Backtick ([code]`[/code]) key." +msgstr "Tasto apice inverso ([code]`[/code])." + +msgid "Left brace ([code]{[/code]) key." +msgstr "Tasto parentesi graffa aperta ([code]{[/code])." + +msgid "Vertical bar or [i]pipe[/i] ([code]|[/code]) key." +msgstr "Tasto barra verticale o [i]pipe[/i] ([code]|[/code])." + +msgid "Right brace ([code]}[/code]) key." +msgstr "Tasto parentesi graffa chiusa ([code]}[/code])." + +msgid "Tilde ([code]~[/code]) key." +msgstr "Tasto tilde ([code]~[/code])." + +msgid "Yen symbol ([code]¥[/code]) key." +msgstr "Tasto simbolo del yen ([code]¥[/code])." + +msgid "Section sign ([code]§[/code]) key." +msgstr "Tasto segno di sezione ([code]§[/code])." + msgid "Key Code mask." msgstr "Maschera di codice tasto." @@ -4787,6 +6124,40 @@ msgstr "" "predefinito, come se fosse appena acceso. Non dovrebbe essere inviato quando " "il dispositivo MIDI viene acceso." +msgid "" +"Methods that return [enum Error] return [constant OK] when no error " +"occurred.\n" +"Since [constant OK] has value [code]0[/code], and all other error constants " +"are positive integers, it can also be used in boolean checks.\n" +"[codeblock]\n" +"var error = method_that_returns_error()\n" +"if error != OK:\n" +" printerr(\"Failure!\")\n" +"\n" +"# Or, alternatively:\n" +"if error:\n" +" printerr(\"Still failing!\")\n" +"[/codeblock]\n" +"[b]Note:[/b] Many functions do not return an error code, but will print error " +"messages to standard output." +msgstr "" +"I metodi che restituiscono [enum Error] restituiscono [constant OK] quando " +"non si è verificato alcun errore.\n" +"Poiché [constant OK] ha valore di [code]0[/code], e tutte le altre costanti " +"d'errore sono interi positivi, può essere utilizzato anche nelle verifiche " +"booleane.\n" +"[codeblock]\n" +"var errore = metodo_che_restituisce_errore()\n" +"if errore != OK:\n" +" printerr(\"Male!\")\n" +"\n" +"# O, alternativamente:\n" +"if errore:\n" +" printerr(\"Ancora male!\")\n" +"[/codeblock]\n" +"[b]Note:[/b] Molte funzioni non restituiscono un codice di errore, ma " +"stampano messaggi d'errore sull'output standard." + msgid "Generic error." msgstr "Errore generico." @@ -4950,6 +6321,51 @@ msgstr "" msgid "The property has no hint for the editor." msgstr "Questa proprietà non ha nessun suggerimento per l'editor." +msgid "" +"Hints that an [int] or [float] property should be within a range specified " +"via the hint string [code]\"min,max\"[/code] or [code]\"min,max,step\"[/" +"code]. The hint string can optionally include [code]\"or_greater\"[/code] and/" +"or [code]\"or_less\"[/code] to allow manual input going respectively above " +"the max or below the min values.\n" +"[b]Example:[/b] [code]\"-360,360,1,or_greater,or_less\"[/code].\n" +"Additionally, other keywords can be included: [code]\"exp\"[/code] for " +"exponential range editing, [code]\"radians_as_degrees\"[/code] for editing " +"radian angles in degrees (the range values are also in degrees), " +"[code]\"degrees\"[/code] to hint at an angle and [code]\"hide_slider\"[/code] " +"to hide the slider." +msgstr "" +"Indica che una proprietà [int] o [float] dovrebbe essere all'interno di un " +"intervallo specificato tramite la stringa indicativa [code]\"min,max\"[/code] " +"o [code]\"min,max,step\"[/code]. La stringa indicativa può, facoltativamente, " +"includere [code]\"or_greater\"[/code] e/o [code]\"or_lesser\"[/code] per " +"permettere un input manuale che vada rispettivamente sopra il massimo o sotto " +"il minimo dei valori.\n" +"[b]Esempio:[/b] [code]\"-360,360,1,or_greater,or_lesser\"[/code].\n" +"Inoltre, è possibile includere altre parole chiave: [code]\"exp\"[/code] per " +"modificare in un intervallo esponenziale, [code]\"radians_as_degrees\"[/code] " +"per modificare angoli in radianti visualizzati in gradi (anche i valori " +"dell'intervallo sono in gradi), [code]\"degrees\"[/code] per indicare un " +"angolo e [code]\"hide_slider\"[/code] per nascondere lo slider." + +msgid "" +"Hints that an [int] or [String] property is an enumerated value to pick in a " +"list specified via a hint string.\n" +"The hint string is a comma separated list of names such as [code]\"Hello," +"Something,Else\"[/code]. Whitespaces are [b]not[/b] removed from either end " +"of a name. For integer properties, the first name in the list has value 0, " +"the next 1, and so on. Explicit values can also be specified by appending " +"[code]:integer[/code] to the name, e.g. [code]\"Zero,One,Three:3,Four," +"Six:6\"[/code]." +msgstr "" +"Indica che una proprietà [int] o [String] sia un valore innumerato da " +"scegliere tra una lista specificata tramite una stringa indicativa.\n" +"La stringa indicativa è un elenco di nomi separati da virgola come " +"[code]\"Ciao,Qualcosa,Altro\"[/code]. Gli spazi vuoti [b]non[/b] sono rimossi " +"da entrambe le estremità di un nome. Per le proprietà di tipo intero, il " +"primo nome nella lista ha valore 0, il successivo 1, e così via. È possibile " +"specificare valori espliciti aggiungendo [code]:intero[/code] al nome, ad " +"esempio [code]\"Zero,Uno,Tre:3,Quattro,Sei:6\"[/code]." + msgid "" "Hints that a [String] property can be an enumerated value to pick in a list " "specified via a hint string such as [code]\"Hello,Something,Else\"[/code].\n" @@ -5141,9 +6557,185 @@ msgid "" "type specified in the hint string. Used by the debugger." msgstr "" "Indica che il valore della proprietà è un oggetto codificato come ID di " -"oggetto, con il suo tipo specificato nella stringa di suggerimento. Usato dal " +"oggetto, con il suo tipo specificato nella stringa indicativa. Usato dal " "debugger." +msgid "" +"If a property is [String], hints that the property represents a particular " +"type (class). This allows to select a type from the create dialog. The " +"property will store the selected type as a string.\n" +"If a property is [Array], hints the editor how to show elements. The " +"[code]hint_string[/code] must encode nested types using [code]\":\"[/code] " +"and [code]\"/\"[/code].\n" +"[codeblocks]\n" +"[gdscript]\n" +"# Array of elem_type.\n" +"hint_string = \"%d:\" % [elem_type]\n" +"hint_string = \"%d/%d:%s\" % [elem_type, elem_hint, elem_hint_string]\n" +"# Two-dimensional array of elem_type (array of arrays of elem_type).\n" +"hint_string = \"%d:%d:\" % [TYPE_ARRAY, elem_type]\n" +"hint_string = \"%d:%d/%d:%s\" % [TYPE_ARRAY, elem_type, elem_hint, " +"elem_hint_string]\n" +"# Three-dimensional array of elem_type (array of arrays of arrays of " +"elem_type).\n" +"hint_string = \"%d:%d:%d:\" % [TYPE_ARRAY, TYPE_ARRAY, elem_type]\n" +"hint_string = \"%d:%d:%d/%d:%s\" % [TYPE_ARRAY, TYPE_ARRAY, elem_type, " +"elem_hint, elem_hint_string]\n" +"[/gdscript]\n" +"[csharp]\n" +"// Array of elemType.\n" +"hintString = $\"{elemType:D}:\";\n" +"hintString = $\"{elemType:}/{elemHint:D}:{elemHintString}\";\n" +"// Two-dimensional array of elemType (array of arrays of elemType).\n" +"hintString = $\"{Variant.Type.Array:D}:{elemType:D}:\";\n" +"hintString = $\"{Variant.Type.Array:D}:{elemType:D}/{elemHint:D}:" +"{elemHintString}\";\n" +"// Three-dimensional array of elemType (array of arrays of arrays of " +"elemType).\n" +"hintString = $\"{Variant.Type.Array:D}:{Variant.Type.Array:D}:{elemType:D}:" +"\";\n" +"hintString = $\"{Variant.Type.Array:D}:{Variant.Type.Array:D}:{elemType:D}/" +"{elemHint:D}:{elemHintString}\";\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Examples:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"hint_string = \"%d:\" % [TYPE_INT] # Array of integers.\n" +"hint_string = \"%d/%d:1,10,1\" % [TYPE_INT, PROPERTY_HINT_RANGE] # Array of " +"integers (in range from 1 to 10).\n" +"hint_string = \"%d/%d:Zero,One,Two\" % [TYPE_INT, PROPERTY_HINT_ENUM] # Array " +"of integers (an enum).\n" +"hint_string = \"%d/%d:Zero,One,Three:3,Six:6\" % [TYPE_INT, " +"PROPERTY_HINT_ENUM] # Array of integers (an enum).\n" +"hint_string = \"%d/%d:*.png\" % [TYPE_STRING, PROPERTY_HINT_FILE] # Array of " +"strings (file paths).\n" +"hint_string = \"%d/%d:Texture2D\" % [TYPE_OBJECT, " +"PROPERTY_HINT_RESOURCE_TYPE] # Array of textures.\n" +"\n" +"hint_string = \"%d:%d:\" % [TYPE_ARRAY, TYPE_FLOAT] # Two-dimensional array " +"of floats.\n" +"hint_string = \"%d:%d/%d:\" % [TYPE_ARRAY, TYPE_STRING, " +"PROPERTY_HINT_MULTILINE_TEXT] # Two-dimensional array of multiline strings.\n" +"hint_string = \"%d:%d/%d:-1,1,0.1\" % [TYPE_ARRAY, TYPE_FLOAT, " +"PROPERTY_HINT_RANGE] # Two-dimensional array of floats (in range from -1 to " +"1).\n" +"hint_string = \"%d:%d/%d:Texture2D\" % [TYPE_ARRAY, TYPE_OBJECT, " +"PROPERTY_HINT_RESOURCE_TYPE] # Two-dimensional array of textures.\n" +"[/gdscript]\n" +"[csharp]\n" +"hintString = $\"{Variant.Type.Int:D}/{PropertyHint.Range:D}:1,10,1\"; // " +"Array of integers (in range from 1 to 10).\n" +"hintString = $\"{Variant.Type.Int:D}/{PropertyHint.Enum:D}:Zero,One,Two\"; // " +"Array of integers (an enum).\n" +"hintString = $\"{Variant.Type.Int:D}/{PropertyHint.Enum:D}:Zero,One,Three:3," +"Six:6\"; // Array of integers (an enum).\n" +"hintString = $\"{Variant.Type.String:D}/{PropertyHint.File:D}:*.png\"; // " +"Array of strings (file paths).\n" +"hintString = $\"{Variant.Type.Object:D}/{PropertyHint.ResourceType:D}:" +"Texture2D\"; // Array of textures.\n" +"\n" +"hintString = $\"{Variant.Type.Array:D}:{Variant.Type.Float:D}:\"; // Two-" +"dimensional array of floats.\n" +"hintString = $\"{Variant.Type.Array:D}:{Variant.Type.String:D}/{PropertyHint." +"MultilineText:D}:\"; // Two-dimensional array of multiline strings.\n" +"hintString = $\"{Variant.Type.Array:D}:{Variant.Type.Float:D}/{PropertyHint." +"Range:D}:-1,1,0.1\"; // Two-dimensional array of floats (in range from -1 to " +"1).\n" +"hintString = $\"{Variant.Type.Array:D}:{Variant.Type.Object:D}/{PropertyHint." +"ResourceType:D}:Texture2D\"; // Two-dimensional array of textures.\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] The trailing colon is required for properly detecting built-in " +"types." +msgstr "" +"Se una proprietà è [String], suggerisce che la proprietà rappresenta un tipo " +"particolare (classe). Questo consente di selezionare un tipo dalla finestra " +"di dialogo di creazione. La proprietà memorizzerà il tipo selezionato come " +"stringa.\n" +"Se una proprietà è [Array], indica all'editor come mostrare gli elementi. La " +"[code]hint_string[/code] deve codificare i tipi innestati usando [code]\":\"[/" +"code] e [code]\"/\"[/code].\n" +"[codeblocks]\n" +"[gdscript]\n" +"# Array di elem_type.\n" +"hint_string = \"%d:\" % [elem_type]\n" +"hint_string = \"%d/%d:%s\" % [elem_type, elem_hint, elem_hint_string]\n" +"# Array bidimensionale di elem_type (array di array di elem_type).\n" +"hint_string = \"%d:%d:\" % [TYPE_ARRAY, elem_type]\n" +"hint_string = \"%d:%d/%d:%s\" % [TYPE_ARRAY, elem_type, elem_hint, " +"elem_hint_string]\n" +"# Array tridimensionale di elem_type (array di array di array di elem_type).\n" +"hint_string = \"%d:%d:%d:\" % [TYPE_ARRAY, TYPE_ARRAY, elem_type]\n" +"hint_string = \"%d:%d:%d/%d:%s\" % [TYPE_ARRAY, TYPE_ARRAY, elem_type, " +"elem_hint, elem_hint_string]\n" +"[/gdscript]\n" +"[csharp]\n" +"// Array di elemType.\n" +"hintString = $\"{elemType:D}:\";\n" +"hintString = $\"{elemType:}/{elemHint:D}:{elemHintString}\";\n" +"// Array bidimensionale di elemType (array di array di elemType).\n" +"hintString = $\"{Variant.Type.Array:D}:{elemType:D}:\";\n" +"hintString = $\"{Variant.Type.Array:D}:{elemType:D}/{elemHint:D}:" +"{elemHintString}\";\n" +"// Array tridimensionale di elemType (array di array di array di elemType).\n" +"hintString = $\"{Variant.Type.Array:D}:{Variant.Type.Array:D}:{elemType:D}:" +"\";\n" +"hintString = $\"{Variant.Type.Array:D}:{Variant.Type.Array:D}:{elemType:D}/" +"{elemHint:D}:{elemHintString}\";\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Esempi:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"hint_string = \"%d:\" % [TYPE_INT] # Array di interi.\n" +"hint_string = \"%d/%d:1,10,1\" % [TYPE_INT, PROPERTY_HINT_RANGE] # Array di " +"interi (nell'intervallo da 1 a 10).\n" +"hint_string = \"%d/%d:Zero,Uno,Due\" % [TYPE_INT, PROPERTY_HINT_ENUM] # Array " +"di interi (un enum).\n" +"hint_string = \"%d/%d:Zero,Uno,Tre:3,Sei:6\" % [TYPE_INT, PROPERTY_HINT_ENUM] " +"# Array di interi (un enum).\n" +"hint_string = \"%d/%d:*.png\" % [TYPE_STRING, PROPERTY_HINT_FILE] # Array di " +"stringhe (percorsi di file).\n" +"hint_string = \"%d/%d:Texture2D\" % [TYPE_OBJECT, " +"PROPERTY_HINT_RESOURCE_TYPE] # Array di texture.\n" +"\n" +"hint_string = \"%d:%d:\" % [TYPE_ARRAY, TYPE_FLOAT] # Array bidimensionale di " +"float.\n" +"hint_string = \"%d:%d/%d:\" % [TYPE_ARRAY, TYPE_STRING, " +"PROPERTY_HINT_MULTILINE_TEXT] # Array bidimensionale di stringhe multilinea.\n" +"hint_string = \"%d:%d/%d:-1,1,0.1\" % [TYPE_ARRAY, TYPE_FLOAT, " +"PROPERTY_HINT_RANGE] # Array bidimensionale di float (nell'intervallo da -1 a " +"1).\n" +"hint_string = \"%d:%d/%d:Texture2D\" % [TYPE_ARRAY, TYPE_OBJECT, " +"PROPERTY_HINT_RESOURCE_TYPE] # Array bidimensionale di texture.\n" +"[/gdscript]\n" +"[csharp]\n" +"hintString = $\"{Variant.Type.Int:D}/{PropertyHint.Range:D}:1,10,1\"; // " +"Array di interi (nell'intervallo da 1 a 10).\n" +"hintString = $\"{Variant.Type.Int:D}/{PropertyHint.Enum:D}:Zero,Uno,Due\"; // " +"Array di interi (un enum).\n" +"hintString = $\"{Variant.Type.Int:D}/{PropertyHint.Enum:D}:Zero,Uno,Tre:3," +"Sei:6\"; // Array di interi (un enum).\n" +"hintString = $\"{Variant.Type.String:D}/{PropertyHint.File:D}:*.png\"; // " +"Array di stringhe (percorsi di file).\n" +"hintString = $\"{Variant.Type.Object:D}/{PropertyHint.ResourceType:D}:" +"Texture2D\"; // Array di texture.\n" +"\n" +"hintString = $\"{Variant.Type.Array:D}:{Variant.Type.Float:D}:\"; // Array " +"bidimensionale di float.\n" +"hintString = $\"{Variant.Type.Array:D}:{Variant.Type.String:D}/{PropertyHint." +"MultilineText:D}:\"; // Array bidimensionale di stringhe multilinea.\n" +"hintString = $\"{Variant.Type.Array:D}:{Variant.Type.Float:D}/{PropertyHint." +"Range:D}:-1,1,0.1\"; // Array bidimensionale di float (nell'intervallo da -1 " +"a 1).\n" +"hintString = $\"{Variant.Type.Array:D}:{Variant.Type.Object:D}/{PropertyHint." +"ResourceType:D}:Texture2D\"; // Array bidimensionale di texture.\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Nota:[/b] I due punti alla fine sono necessari per rilevare correttamente " +"i tipi incorporati." + msgid "This hint is not used by the engine." msgstr "Questo suggerimento non è usato dal motore." @@ -5194,8 +6786,15 @@ msgid "" "Hints that a property is an [Array] with the stored type specified in the " "hint string." msgstr "" -"Suggerisce che una proprietà è un [Array] con il tipo memorizzato specificato " -"nella stringa di suggerimento." +"Indica che una proprietà è un [Array] con il tipo memorizzato specificato " +"nella stringa indicativa." + +msgid "" +"Hints that a property is a [Dictionary] with the stored types specified in " +"the hint string." +msgstr "" +"Indica che una proprietà è un [Dictionary] con i tipi memorizzati specificati " +"nella stringa indicativa." msgid "" "Hints that a string property is a locale code. Editing it will show a locale " @@ -5235,6 +6834,43 @@ msgstr "" "Induce che una proprietà di stringa è una password, e ogni carattere è " "sostituito con il carattere segreto." +msgid "" +"Hints that a [Callable] property should be displayed as a clickable button. " +"When the button is pressed, the callable is called. The hint string specifies " +"the button text and optionally an icon from the [code]\"EditorIcons\"[/code] " +"theme type.\n" +"[codeblock lang=text]\n" +"\"Click me!\" - A button with the text \"Click me!\" and the default " +"\"Callable\" icon.\n" +"\"Click me!,ColorRect\" - A button with the text \"Click me!\" and the " +"\"ColorRect\" icon.\n" +"[/codeblock]\n" +"[b]Note:[/b] A [Callable] cannot be properly serialized and stored in a file, " +"so it is recommended to use [constant PROPERTY_USAGE_EDITOR] instead of " +"[constant PROPERTY_USAGE_DEFAULT]." +msgstr "" +"Indica che una proprietà [Callable] dovrebbe essere visualizzata come un " +"pulsante cliccabile. Quando il pulsante viene premuto, il chiamabile viene " +"richiamato. La stringa indicativa specifica il testo del pulsante e, " +"facoltativamente, un'icona dal tipo di tema [code]\"EditorIcons\"[/code].\n" +"[codeblock lang=text]\n" +"\"Cliccami!\" - Un pulsante con il testo \"Cliccami!\" e l'icona \"Callable\" " +"predefinita.\n" +"\"Cliccami!,ColorRect\" - Un pulsante con il testo \"Cliccami!\" e l'icona " +"\"ColorRect\".\n" +"[/codeblock]\n" +"[b]Nota:[/b] Un [Callable] non può essere correttamente serializzato e " +"memorizzato in un file, quindi si consiglia di utilizzare [constant " +"PROPERTY_USAGE_EDITOR] invece di [constant PROPERTY_USAGE_DEFAULT]." + +msgid "" +"Hints that a property will be changed on its own after setting, such as " +"[member AudioStreamPlayer.playing] or [member GPUParticles3D.emitting]." +msgstr "" +"Indica che una proprietà verrà modificata automaticamente dopo che è " +"impostata, ad esempio [member AudioStreamPlayer.playing] o [member " +"GPUParticles3D.emitting]." + msgid "Represents the size of the [enum PropertyHint] enum." msgstr "Rappresenta la dimensione dell'enumerazione [enum PropertyHint]." @@ -5298,6 +6934,20 @@ msgstr "" "In seguito a una modifica della proprietà, sarà chiesto all'utente di " "riavviare l'editor." +msgid "" +"The property is a script variable. [constant PROPERTY_USAGE_SCRIPT_VARIABLE] " +"can be used to distinguish between exported script variables from built-in " +"variables (which don't have this usage flag). By default, [constant " +"PROPERTY_USAGE_SCRIPT_VARIABLE] is [b]not[/b] applied to variables that are " +"created by overriding [method Object._get_property_list] in a script." +msgstr "" +"La proprietà è una variabile di script. [constant " +"PROPERTY_USAGE_SCRIPT_VARIABLE] può essere utilizzata per distinguere tra le " +"variabili esportate da script e le variabili integrate (che non hanno questo " +"flag di utilizzo). Come predefinito, [constant " +"PROPERTY_USAGE_SCRIPT_VARIABLE] [b]non[/b] viene applicato alle variabili " +"create sovrascrivendo [method Object._get_property_list] in uno script." + msgid "" "The property value of type [Object] will be stored even if its value is " "[code]null[/code]." @@ -5313,6 +6963,13 @@ msgstr "" msgid "This flag is not used by the engine." msgstr "Questo flag non è utilizzato dal motore." +msgid "" +"The property is a variable of enum type, i.e. it only takes named integer " +"constants from its associated enumeration." +msgstr "" +"La proprietà è una variabile di tipo enumeratore, ossia prende solo le " +"constanti di interi denominate dalla sua enumerazione associata." + msgid "" "If property has [code]nil[/code] as default value, its type will be [Variant]." msgstr "" @@ -5409,29 +7066,32 @@ msgstr "" "(memorizzazione)." msgid "Flag for a normal method." -msgstr "Flag per una funzione normale." +msgstr "Flag per un metodo normale." msgid "Flag for an editor method." -msgstr "Flag per una funzione dell'editor." +msgstr "Flag per un metodo dell'editor." msgid "Flag for a constant method." -msgstr "Flag per una funzione costante." +msgstr "Flag per un metodo costante." msgid "Flag for a virtual method." -msgstr "Flag per una funzione virtuale." +msgstr "Flag per un metodo virtuale." msgid "Flag for a method with a variable number of arguments." -msgstr "Flag per una funzione con un numero variabile di argomenti." +msgstr "Flag per una metodo con un numero variabile di argomenti." msgid "Flag for a static method." -msgstr "Flag per una funzione statica." +msgstr "Flag per un metodo statico." msgid "" "Used internally. Allows to not dump core virtual methods (such as [method " "Object._notification]) to the JSON API." msgstr "" "Usato internamente. Consente di non scaricare metodi virtuali fondamentali " -"(come [method Object._notification]) all'API di JSON." +"(come [method Object._notification]) all'API JSON." + +msgid "Flag for a virtual method that is required." +msgstr "Flag per un metodo virtuale che è obbligatorio." msgid "Default method flags (normal)." msgstr "Flag di metodo predefiniti (normale)." @@ -5656,7 +7316,7 @@ msgstr "" "agli assi in uno spazio 3D. Essa è definita dalla sua posizione ([member " "position]) e dimensioni ([member size]), che sono [Vector3]. Viene spesso " "utilizzato per dei test rapidi di sovrapposizione (vedi [method intersects]). " -"Nonostante [AABB] sia allineato alle assi, può essere combinato con " +"Nonostante [AABB] sia allineato agli assi, può essere combinato con " "[Transform3D] per rappresentare una bounding box ruotata o inclinata.\n" "Utilizza le coordinate in virgola mobile. La controparte 2D a [AABB] è " "[Rect2]. Non esiste una versione di [AABB] che utilizza delle coordinate " @@ -5693,6 +7353,47 @@ msgstr "" "Costruisce un [AABB] dalla posizione ([param position]) e dimensioni ([param " "size])." +msgid "" +"Returns an [AABB] equivalent to this bounding box, with its width, height, " +"and depth modified to be non-negative values.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var box = AABB(Vector3(5, 0, 5), Vector3(-20, -10, -5))\n" +"var absolute = box.abs()\n" +"print(absolute.position) # Prints (-15.0, -10.0, 0.0)\n" +"print(absolute.size) # Prints (20.0, 10.0, 5.0)\n" +"[/gdscript]\n" +"[csharp]\n" +"var box = new Aabb(new Vector3(5, 0, 5), new Vector3(-20, -10, -5));\n" +"var absolute = box.Abs();\n" +"GD.Print(absolute.Position); // Prints (-15, -10, 0)\n" +"GD.Print(absolute.Size); // Prints (20, 10, 5)\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] It's recommended to use this method when [member size] is " +"negative, as most other methods in Godot assume that the [member size]'s " +"components are greater than [code]0[/code]." +msgstr "" +"Restituisce un [AABB] equivalente a questa bounding box, con la sua " +"larghezza, altezza e profondità modificate per essere valori non negativi.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var box = AABB(Vector3(5, 0, 5), Vector3(-20, -10, -5))\n" +"var absolute = box.abs()\n" +"print(absolute.position) # Stampa (-15.0, -10.0, 0.0)\n" +"print(absolute.size) # Stampa (20.0, 10.0, 5.0)\n" +"[/gdscript]\n" +"[csharp]\n" +"var box = new Aabb(new Vector3(5, 0, 5), new Vector3(-20, -10, -5));\n" +"var absolute = box.Abs();\n" +"GD.Print(absolute.Position); // Stampa (-15, -10, 0)\n" +"GD.Print(absolute.Size); // Stampa (20, 10, 5)\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Nota:[/b] Si consiglia di utilizzare questo metodo quando [member size] è " +"negativo, poiché la maggior parte degli altri metodi in Godot presumono che i " +"componenti di [member size] sono maggiori di [code]0[/code]." + msgid "" "Returns [code]true[/code] if this bounding box [i]completely[/i] encloses the " "[param with] box. The edges of both boxes are included.\n" @@ -5741,6 +7442,61 @@ msgstr "" "[/csharp]\n" "[/codeblocks]" +msgid "" +"Returns a copy of this bounding box expanded to align the edges with the " +"given [param to_point], if necessary.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var box = AABB(Vector3(0, 0, 0), Vector3(5, 2, 5))\n" +"\n" +"box = box.expand(Vector3(10, 0, 0))\n" +"print(box.position) # Prints (0.0, 0.0, 0.0)\n" +"print(box.size) # Prints (10.0, 2.0, 5.0)\n" +"\n" +"box = box.expand(Vector3(-5, 0, 5))\n" +"print(box.position) # Prints (-5.0, 0.0, 0.0)\n" +"print(box.size) # Prints (15.0, 2.0, 5.0)\n" +"[/gdscript]\n" +"[csharp]\n" +"var box = new Aabb(new Vector3(0, 0, 0), new Vector3(5, 2, 5));\n" +"\n" +"box = box.Expand(new Vector3(10, 0, 0));\n" +"GD.Print(box.Position); // Prints (0, 0, 0)\n" +"GD.Print(box.Size); // Prints (10, 2, 5)\n" +"\n" +"box = box.Expand(new Vector3(-5, 0, 5));\n" +"GD.Print(box.Position); // Prints (-5, 0, 0)\n" +"GD.Print(box.Size); // Prints (15, 2, 5)\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"Restituisce una copia di questa bounding box espansa per allineare i bordi " +"con il punto [param to] specificato, se necessario.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var box = AABB(Vector3(0, 0, 0), Vector3(5, 2, 5))\n" +"\n" +"box = box.expand(Vector3(10, 0, 0))\n" +"print(box.position) # Stampa (0.0, 0.0, 0.0)\n" +"print(box.size) # Stampa (10.0, 2.0, 5.0)\n" +"\n" +"box = box.expand(Vector3(-5, 0, 5))\n" +"print(box.position) # Stampa (-5.0, 0.0, 0.0)\n" +"print(box.size) # Stampa (15.0, 2.0, 5.0)\n" +"[/gdscript]\n" +"[csharp]\n" +"var box = new Aabb(new Vector3(0, 0, 0), new Vector3(5, 2, 5));\n" +"\n" +"box = box.Expand(new Vector3(10, 0, 0));\n" +"GD.Print(box.Position); // Stampa (0, 0, 0)\n" +"GD.Print(box.Size); // Stampa (10, 2, 5)\n" +"\n" +"box = box.Expand(new Vector3(-5, 0, 5));\n" +"GD.Print(box.Position); // Stampa (-5, 0, 0)\n" +"GD.Print(box.Size); // Stampa (15, 2, 5)\n" +"[/csharp]\n" +"[/codeblocks]" + msgid "" "Returns the center point of the bounding box. This is the same as " "[code]position + (size / 2.0)[/code]." @@ -5758,6 +7514,49 @@ msgstr "" "[member position], e un [param idx] di [code]7[/code] è lo stesso di [member " "end]." +msgid "" +"Returns the longest normalized axis of this bounding box's [member size], as " +"a [Vector3] ([constant Vector3.RIGHT], [constant Vector3.UP], or [constant " +"Vector3.BACK]).\n" +"[codeblocks]\n" +"[gdscript]\n" +"var box = AABB(Vector3(0, 0, 0), Vector3(2, 4, 8))\n" +"\n" +"print(box.get_longest_axis()) # Prints (0.0, 0.0, 1.0)\n" +"print(box.get_longest_axis_index()) # Prints 2\n" +"print(box.get_longest_axis_size()) # Prints 8.0\n" +"[/gdscript]\n" +"[csharp]\n" +"var box = new Aabb(new Vector3(0, 0, 0), new Vector3(2, 4, 8));\n" +"\n" +"GD.Print(box.GetLongestAxis()); // Prints (0, 0, 1)\n" +"GD.Print(box.GetLongestAxisIndex()); // Prints Z\n" +"GD.Print(box.GetLongestAxisSize()); // Prints 8\n" +"[/csharp]\n" +"[/codeblocks]\n" +"See also [method get_longest_axis_index] and [method get_longest_axis_size]." +msgstr "" +"Restituisce l'asse normalizzato più lungo di [member size] di questa bounding " +"box, come [Vector3] ([constant Vector3.RIGHT], [constant Vector3.UP] o " +"[constant Vector3.BACK]).\n" +"[codeblocks]\n" +"[gdscript]\n" +"var box = AABB(Vector3(0, 0, 0), Vector3(2, 4, 8))\n" +"\n" +"print(box.get_longest_axis()) # Stampa (0.0, 0.0, 1.0)\n" +"print(box.get_longest_axis_index()) # Stampa 2\n" +"print(box.get_longest_axis_size()) # Stampa 8.0\n" +"[/gdscript]\n" +"[csharp]\n" +"var box = new Aabb(new Vector3(0, 0, 0), new Vector3(2, 4, 8));\n" +"\n" +"GD.Print(box.GetLongestAxis()); // Stampa (0, 0, 1)\n" +"GD.Print(box.GetLongestAxisIndex()); // Stampa Z\n" +"GD.Print(box.GetLongestAxisSize()); // Stampa 8\n" +"[/csharp]\n" +"[/codeblocks]\n" +"Vedi anche [method get_longest_axis_index] e [method get_longest_axis_size]." + msgid "" "Returns the index to the longest axis of this bounding box's [member size] " "(see [constant Vector3.AXIS_X], [constant Vector3.AXIS_Y], and [constant " @@ -5776,6 +7575,49 @@ msgstr "" "Restituisce la dimensione più lunga di [member size] di questa bounding box.\n" "Per un esempio, vedi [method get_longest_axis]." +msgid "" +"Returns the shortest normalized axis of this bounding box's [member size], as " +"a [Vector3] ([constant Vector3.RIGHT], [constant Vector3.UP], or [constant " +"Vector3.BACK]).\n" +"[codeblocks]\n" +"[gdscript]\n" +"var box = AABB(Vector3(0, 0, 0), Vector3(2, 4, 8))\n" +"\n" +"print(box.get_shortest_axis()) # Prints (1.0, 0.0, 0.0)\n" +"print(box.get_shortest_axis_index()) # Prints 0\n" +"print(box.get_shortest_axis_size()) # Prints 2.0\n" +"[/gdscript]\n" +"[csharp]\n" +"var box = new Aabb(new Vector3(0, 0, 0), new Vector3(2, 4, 8));\n" +"\n" +"GD.Print(box.GetShortestAxis()); // Prints (1, 0, 0)\n" +"GD.Print(box.GetShortestAxisIndex()); // Prints X\n" +"GD.Print(box.GetShortestAxisSize()); // Prints 2\n" +"[/csharp]\n" +"[/codeblocks]\n" +"See also [method get_shortest_axis_index] and [method get_shortest_axis_size]." +msgstr "" +"Restituisce l'asse normalizzato più corto di [member size] di questa bounding " +"box, come [Vector3] ([constant Vector3.RIGHT], [constant Vector3.UP] o " +"[constant Vector3.BACK]).\n" +"[codeblocks]\n" +"[gdscript]\n" +"var box = AABB(Vector3(0, 0, 0), Vector3(2, 4, 8))\n" +"\n" +"print(box.get_shortest_axis()) # Stampa (1.0, 0.0, 0.0)\n" +"print(box.get_shortest_axis_index()) # Stampa 0\n" +"print(box.get_shortest_axis_size()) # Stampa 2\n" +"[/gdscript]\n" +"[csharp]\n" +"var box = new Aabb(new Vector3(0, 0, 0), new Vector3(2, 4, 8));\n" +"\n" +"GD.Print(box.GetShortestAxis()); // Stampa (1, 0, 0)\n" +"GD.Print(box.GetShortestAxisIndex()); // Stampa X\n" +"GD.Print(box.GetShortestAxisSize()); // Stampa 2\n" +"[/csharp]\n" +"[/codeblocks]\n" +"Vedi anche [method get_shortest_axis_index] e [method get_shortest_axis_size]." + msgid "" "Returns the index to the shortest axis of this bounding box's [member size] " "(see [constant Vector3.AXIS_X], [constant Vector3.AXIS_Y], and [constant " @@ -5810,6 +7652,54 @@ msgstr "" "Restituisce il volume della bounding box. Questo è equivalente a [code]size.x " "* size.y * size.z[/code]. Vedi anche [method has_volume]." +msgid "" +"Returns a copy of this bounding box extended on all sides by the given amount " +"[param by]. A negative amount shrinks the box instead.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var a = AABB(Vector3(4, 4, 4), Vector3(8, 8, 8)).grow(4)\n" +"print(a.position) # Prints (0.0, 0.0, 0.0)\n" +"print(a.size) # Prints (16.0, 16.0, 16.0)\n" +"\n" +"var b = AABB(Vector3(0, 0, 0), Vector3(8, 4, 2)).grow(2)\n" +"print(b.position) # Prints (-2.0, -2.0, -2.0)\n" +"print(b.size) # Prints (12.0, 8.0, 6.0)\n" +"[/gdscript]\n" +"[csharp]\n" +"var a = new Aabb(new Vector3(4, 4, 4), new Vector3(8, 8, 8)).Grow(4);\n" +"GD.Print(a.Position); // Prints (0, 0, 0)\n" +"GD.Print(a.Size); // Prints (16, 16, 16)\n" +"\n" +"var b = new Aabb(new Vector3(0, 0, 0), new Vector3(8, 4, 2)).Grow(2);\n" +"GD.Print(b.Position); // Prints (-2, -2, -2)\n" +"GD.Print(b.Size); // Prints (12, 8, 6)\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"Restituisce una copia di questa bounding box estesa su tutti i lati dalla " +"quantità fornita ([param by]). Una quantità negativa invece restringe la " +"scatola.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var a = AABB(Vector3(4, 4, 4), Vector3(8, 8, 8)).grow(4)\n" +"print(a.position) # Stampa (0.0, 0.0, 0.0)\n" +"print(a.size) # Stampa (16.0, 16.0, 16.0)\n" +"\n" +"var b = AABB(Vector3(0, 0, 0), Vector3(8, 4, 2)).grow(2)\n" +"print(b.position) # Stampa (-2.0, -2.0, -2.0)\n" +"print(b.size) # Stampa (12.0, 8.0, 6.0)\n" +"[/gdscript]\n" +"[csharp]\n" +"var a = new Aabb(new Vector3(4, 4, 4), new Vector3(8, 8, 8)).Grow(4);\n" +"GD.Print(a.Position); // Stampa (0, 0, 0)\n" +"GD.Print(a.Size); // Stampa (16, 16, 16)\n" +"\n" +"var b = new Aabb(new Vector3(0, 0, 0), new Vector3(8, 4, 2)).Grow(2);\n" +"GD.Print(b.Position); // Stampa (-2, -2, -2)\n" +"GD.Print(b.Size); // Stampa (12, 8, 6)\n" +"[/csharp]\n" +"[/codeblocks]" + msgid "" "Returns [code]true[/code] if the bounding box contains the given [param " "point]. By convention, points exactly on the right, top, and front sides are " @@ -5840,6 +7730,57 @@ msgstr "" "Restituisce [code]true[/code] se la lunghezza, l'altezza, e la profondità di " "questa bounding box sono tutti positivi. Vedi anche [method get_volume]." +msgid "" +"Returns the intersection between this bounding box and [param with]. If the " +"boxes do not intersect, returns an empty [AABB]. If the boxes intersect at " +"the edge, returns a flat [AABB] with no volume (see [method has_surface] and " +"[method has_volume]).\n" +"[codeblocks]\n" +"[gdscript]\n" +"var box1 = AABB(Vector3(0, 0, 0), Vector3(5, 2, 8))\n" +"var box2 = AABB(Vector3(2, 0, 2), Vector3(8, 4, 4))\n" +"\n" +"var intersection = box1.intersection(box2)\n" +"print(intersection.position) # Prints (2.0, 0.0, 2.0)\n" +"print(intersection.size) # Prints (3.0, 2.0, 4.0)\n" +"[/gdscript]\n" +"[csharp]\n" +"var box1 = new Aabb(new Vector3(0, 0, 0), new Vector3(5, 2, 8));\n" +"var box2 = new Aabb(new Vector3(2, 0, 2), new Vector3(8, 4, 4));\n" +"\n" +"var intersection = box1.Intersection(box2);\n" +"GD.Print(intersection.Position); // Prints (2, 0, 2)\n" +"GD.Print(intersection.Size); // Prints (3, 2, 4)\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] If you only need to know whether two bounding boxes are " +"intersecting, use [method intersects], instead." +msgstr "" +"Restituisce l'intersezione tra questa bounding box e [param con]. Se i box " +"non si intersecano, restituisce un [AABB] vuoto. Se i box si intersecano al " +"bordo, restituisce un [AABB] piatto senza volume (vedi [method has_surface] e " +"[method has_volume]).\n" +"[codeblocks]\n" +"[gdscript]\n" +"var box1 = AABB(Vector3(0, 0, 0), Vector3(5, 2, 8))\n" +"var box2 = AABB(Vector3(2, 0, 2), Vector3(8, 4, 4))\n" +"\n" +"var intersection = box1.intersection(box2)\n" +"print(intersection.position) # Stampa (2.0, 0.0, 2.0)\n" +"print(intersection.size) # Stampa (3.0, 2.0, 4.0)\n" +"[/gdscript]\n" +"[csharp]\n" +"var box1 = new Aabb(new Vector3(0, 0, 0), new Vector3(5, 2, 8));\n" +"var box2 = new Aabb(new Vector3(2, 0, 2), new Vector3(8, 4, 4));\n" +"\n" +"var intersection = box1.Intersection(box2);\n" +"GD.Print(intersection.Position); // Stampa (2, 0, 2)\n" +"GD.Print(intersection.Size); // Stampa (3, 2, 4)\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Nota:[/b] Se hai solo bisogno di sapere se due bounding box sono " +"intersecanti, utilizza [method intersects], invece." + msgid "" "Returns [code]true[/code] if this bounding box overlaps with the box [param " "with]. The edges of both boxes are [i]always[/i] excluded." @@ -5876,6 +7817,23 @@ msgstr "" "restituisce [code]null[/code].\n" "Il raggio comincia da [param from], e finisce a [param to]." +msgid "" +"Returns [code]true[/code] if this bounding box and [param aabb] are " +"approximately equal, by calling [method Vector3.is_equal_approx] on the " +"[member position] and the [member size]." +msgstr "" +"Restituisce [code]true[/code] se questa bounding box e [param aabb] sono " +"approssimativamente eguali, chiamando [method Vector3.is_equal_approx] su " +"[member position] e [member size]." + +msgid "" +"Returns [code]true[/code] if this bounding box's values are finite, by " +"calling [method Vector3.is_finite] on the [member position] and the [member " +"size]." +msgstr "" +"Restituisce [code]true[/code] se i valori di questa bounding box sono finiti, " +"chiamando [method Vector3.is_finite] su [member position] e [member size]." + msgid "" "Returns an [AABB] that encloses both this bounding box and [param with] " "around the edges. See also [method encloses]." @@ -5883,6 +7841,40 @@ msgstr "" "Restituisce un [AABB] che racchiude sia questa bounding box sia [param with] " "intorno ai bordi. Vedi anche [method encloses]." +msgid "" +"The ending point. This is usually the corner on the top-right and back of the " +"bounding box, and is equivalent to [code]position + size[/code]. Setting this " +"point affects the [member size]." +msgstr "" +"Il punto di fine. Questo è di solito lo spigolo in alto a destra e sul retro " +"della bounding box, ed è equivalente a [code]position + size[/code]. " +"Impostare questo punto influisce su [member size]." + +msgid "" +"The origin point. This is usually the corner on the bottom-left and forward " +"of the bounding box." +msgstr "" +"Il punto di origine. Questo è di solito lo spigolo in basso a sinistra e in " +"avanti della bounding box." + +msgid "" +"The bounding box's width, height, and depth starting from [member position]. " +"Setting this value also affects the [member end] point.\n" +"[b]Note:[/b] It's recommended setting the width, height, and depth to non-" +"negative values. This is because most methods in Godot assume that the " +"[member position] is the bottom-left-forward corner, and the [member end] is " +"the top-right-back corner. To get an equivalent bounding box with non-" +"negative size, use [method abs]." +msgstr "" +"La larghezza, l'altezza e la profondità della bounding box a partire da " +"[member position]. Impostare questo valore influisce anche sul punto [member " +"end].\n" +"[b]Nota:[/b] Si raccomanda di impostare la larghezza, l'altezza e la " +"profondità a valori non negativi. Questo perché la maggior parte dei metodi " +"in Godot presumono che [member position] sia lo spigolo in basso a sinistra " +"anteriore, e che [member end] sia lo spigolo in alto a destra posteriore. Per " +"ottenere una bounding box con dimensioni non negative, utilizza [method abs]." + msgid "" "Returns [code]true[/code] if the [member position] or [member size] of both " "bounding boxes are not equal.\n" @@ -6496,6 +8488,35 @@ msgstr "" "-1.0[/code] e [code]from_end = true[/code], quindi vedi la sua descrizione " "per ulteriori informazioni." +msgid "" +"Sets [member frame] the [member frame_progress] to the given values. Unlike " +"setting [member frame], this method does not reset the [member " +"frame_progress] to [code]0.0[/code] implicitly.\n" +"[b]Example:[/b] Change the animation while keeping the same [member frame] " +"and [member frame_progress]:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var current_frame = animated_sprite.get_frame()\n" +"var current_progress = animated_sprite.get_frame_progress()\n" +"animated_sprite.play(\"walk_another_skin\")\n" +"animated_sprite.set_frame_and_progress(current_frame, current_progress)\n" +"[/gdscript]\n" +"[/codeblocks]" +msgstr "" +"Imposta [member frame] e [member frame_progress] ai valori forniti. A " +"differenza di impostare [member frame], questo metodo non ripristina [member " +"frame_progress] a [code]0.0[/code] implicitamente.\n" +"[b]Esempio:[/b] Cambia l'animazione, mantenendo lo stesso [member frame] e " +"[member frame_progress].\n" +"[codeblocks]\n" +"[gdscript]\n" +"var current_frame = animated_sprite.get_frame()\n" +"var current_progress = animated_sprite.get_frame_progress()\n" +"animated_sprite.play(\"walk_another_skin\")\n" +"animated_sprite.set_frame_and_progress(current_frame, current_progress)\n" +"[/gdscript]\n" +"[/codeblocks]" + msgid "" "Stops the currently playing animation. The animation position is reset to " "[code]0[/code] and the [code]custom_speed[/code] is reset to [code]1.0[/" @@ -6841,6 +8862,9 @@ msgstr "" msgid "Animation documentation index" msgstr "Indice di documentazione di animazione" +msgid "Adds a marker to this Animation." +msgstr "Aggiunge un marcatore a questa animazione." + msgid "Adds a track to the Animation." msgstr "Aggiunge una traccia all'animazione." @@ -7061,9 +9085,44 @@ msgstr "" "Restituisce l'indice della traccia specificata. Se la traccia non è trovata, " "restituisce -1." +msgid "Returns the name of the marker located at the given time." +msgstr "Restituisce il nome del marcatore situato al tempo fornito." + +msgid "Returns the given marker's color." +msgstr "Restituisce il colore del marcatore specificato." + +msgid "Returns every marker in this Animation, sorted ascending by time." +msgstr "" +"Restituisce ogni marcatore in questa animazione, ordinati in ordine crescente " +"di tempo." + +msgid "Returns the given marker's time." +msgstr "Restituisce il tempo del marcatore specificato." + +msgid "" +"Returns the closest marker that comes after the given time. If no such marker " +"exists, an empty string is returned." +msgstr "" +"Restituisce il marcatore più vicino che viene dopo il tempo specificato. Se " +"tale marcatore non esiste, viene restituita una stringa vuota." + +msgid "" +"Returns the closest marker that comes before the given time. If no such " +"marker exists, an empty string is returned." +msgstr "" +"Restituisce il marcatore più vicino che viene prima del tempo specificato. Se " +"tale marcatore non esiste, viene restituita una stringa vuota." + msgid "Returns the amount of tracks in the animation." msgstr "Restituisce la quantità di tracce nell'animazione." +msgid "" +"Returns [code]true[/code] if this Animation contains a marker with the given " +"name." +msgstr "" +"Restituisce [code]true[/code] se questa animazione contiene un marcatore con " +"il nome specificato." + msgid "Returns the method name of a method track." msgstr "Restituisce il nome del metodo di una traccia di metodi." @@ -7074,6 +9133,14 @@ msgstr "" "Restituisce i valori degli argomenti da chiamare su una traccia di metodi per " "una determinata chiave in una determinata traccia." +msgid "" +"Optimize the animation and all its tracks in-place. This will preserve only " +"as many keys as are necessary to keep the animation within the specified " +"bounds." +msgstr "" +"Ottimizza l'animazione e tutte le sue tracce sul posto. Ciò preserverà solo " +"le chiavi necessarie per mantenere l'animazione entro i limiti specificati." + msgid "Inserts a key in a given 3D position track. Returns the key index." msgstr "" "Inserire una chiave in una determinata traccia di posizione 3D. Restituisce " @@ -7087,6 +9154,9 @@ msgstr "" "secondi). Il [param track_idx] deve essere l'indice di una traccia di " "posizione 3D." +msgid "Removes the marker with the given name from this Animation." +msgstr "Rimuove il marcatore con il nome specificato da questa animazione." + msgid "Removes a track by specifying the track index." msgstr "Rimuove una traccia specificando l'indice della traccia." @@ -7116,6 +9186,9 @@ msgstr "" "secondi). Il [param track_idx] deve essere l'indice di una traccia di scala " "3D." +msgid "Sets the given marker's color." +msgstr "Imposta il colore del marcatore specificato." + msgid "" "Finds the key index by time in a given track. Optionally, only find it if the " "approx/exact time is given.\n" @@ -7504,6 +9577,10 @@ msgstr "" msgid "Returns the keys for the [Animation]s stored in the library." msgstr "Restituisce le chiavi per l'animazione memorizzata nella libreria." +msgid "Returns the key count for the [Animation]s stored in the library." +msgstr "" +"Restituisce il numero di chiavi per le animazioni memorizzate nella libreria." + msgid "" "Returns [code]true[/code] if the library stores an [Animation] with [param " "name] as the key." @@ -7663,6 +9740,364 @@ msgstr "Restituisce la lista di chiavi memorizzate di libreria." msgid "Returns the list of stored animation keys." msgstr "Restituisce la lista di chiavi memorizzate di animazione." +msgid "" +"Retrieve the motion delta of position with the [member root_motion_track] as " +"a [Vector3] that can be used elsewhere.\n" +"If [member root_motion_track] is not a path to a track of type [constant " +"Animation.TYPE_POSITION_3D], returns [code]Vector3(0, 0, 0)[/code].\n" +"See also [member root_motion_track] and [RootMotionView].\n" +"The most basic example is applying position to [CharacterBody3D]:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var current_rotation\n" +"\n" +"func _process(delta):\n" +" if Input.is_action_just_pressed(\"animate\"):\n" +" current_rotation = get_quaternion()\n" +" state_machine.travel(\"Animate\")\n" +" var velocity = current_rotation * animation_tree." +"get_root_motion_position() / delta\n" +" set_velocity(velocity)\n" +" move_and_slide()\n" +"[/gdscript]\n" +"[/codeblocks]\n" +"By using this in combination with [method " +"get_root_motion_rotation_accumulator], you can apply the root motion position " +"more correctly to account for the rotation of the node.\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _process(delta):\n" +" if Input.is_action_just_pressed(\"animate\"):\n" +" state_machine.travel(\"Animate\")\n" +" set_quaternion(get_quaternion() * animation_tree." +"get_root_motion_rotation())\n" +" var velocity = (animation_tree.get_root_motion_rotation_accumulator()." +"inverse() * get_quaternion()) * animation_tree.get_root_motion_position() / " +"delta\n" +" set_velocity(velocity)\n" +" move_and_slide()\n" +"[/gdscript]\n" +"[/codeblocks]\n" +"If [member root_motion_local] is [code]true[/code], return the pre-multiplied " +"translation value with the inverted rotation.\n" +"In this case, the code can be written as follows:\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _process(delta):\n" +" if Input.is_action_just_pressed(\"animate\"):\n" +" state_machine.travel(\"Animate\")\n" +" set_quaternion(get_quaternion() * animation_tree." +"get_root_motion_rotation())\n" +" var velocity = get_quaternion() * animation_tree." +"get_root_motion_position() / delta\n" +" set_velocity(velocity)\n" +" move_and_slide()\n" +"[/gdscript]\n" +"[/codeblocks]" +msgstr "" +"Recupera il delta di movimento della posizione con la [member " +"root_motion_track] come [Vector3] che può essere utilizzato altrove.\n" +"Se [member root_motion_track] non è un percorso verso una traccia di tipo " +"[constant Animation.TYPE_POSITION_3D], restituisce [code]Vector3(0, 0, 0)[/" +"code].\n" +"Vedi anche [member root_motion_track] e [RootMotionView].\n" +"L'esempio più basilare è l'applicazione della posizione a [CharacterBody3D]:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var current_rotation\n" +"\n" +"func _process(delta):\n" +" if Input.is_action_just_pressed(\"animate\"):\n" +" current_rotation = get_quaternion()\n" +" state_machine.travel(\"Animate\")\n" +" var velocity = current_rotation * animation_tree." +"get_root_motion_position() / delta\n" +" set_velocity(velocity)\n" +" move_and_slide()\n" +"[/gdscript]\n" +"[/codeblocks]\n" +"Utilizzando questo in combinazione con [method " +"get_root_motion_rotation_accumulator], puoi applicare la posizione del " +"movimento della radice più correttamente per tenere conto della rotazione del " +"nodo.\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _process(delta):\n" +" if Input.is_action_just_pressed(\"animate\"):\n" +" state_machine.travel(\"Animate\")\n" +" set_quaternion(get_quaternion() * animation_tree." +"get_root_motion_rotation())\n" +" var velocity = (animation_tree.get_root_motion_rotation_accumulator()." +"inverse() * get_quaternion()) * animation_tree.get_root_motion_position() / " +"delta\n" +" set_velocity(velocity)\n" +" move_and_slide()\n" +"[/gdscript]\n" +"[/codeblocks]\n" +"Se [member root_motion_local] è [code]true[/code], restituisce il valore di " +"traslazione pre-moltiplicato con la rotazione invertita.\n" +"In questo caso, il codice può essere scritto come segue:\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _process(delta):\n" +" if Input.is_action_just_pressed(\"animate\"):\n" +" state_machine.travel(\"Animate\")\n" +" set_quaternion(get_quaternion() * animation_tree." +"get_root_motion_rotation())\n" +" var velocity = get_quaternion() * animation_tree." +"get_root_motion_position() / delta\n" +" set_velocity(velocity)\n" +" move_and_slide()\n" +"[/gdscript]\n" +"[/codeblocks]" + +msgid "" +"Retrieve the blended value of the position tracks with the [member " +"root_motion_track] as a [Vector3] that can be used elsewhere.\n" +"This is useful in cases where you want to respect the initial key values of " +"the animation.\n" +"For example, if an animation with only one key [code]Vector3(0, 0, 0)[/code] " +"is played in the previous frame and then an animation with only one key " +"[code]Vector3(1, 0, 1)[/code] is played in the next frame, the difference can " +"be calculated as follows:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var prev_root_motion_position_accumulator\n" +"\n" +"func _process(delta):\n" +" if Input.is_action_just_pressed(\"animate\"):\n" +" state_machine.travel(\"Animate\")\n" +" var current_root_motion_position_accumulator = animation_tree." +"get_root_motion_position_accumulator()\n" +" var difference = current_root_motion_position_accumulator - " +"prev_root_motion_position_accumulator\n" +" prev_root_motion_position_accumulator = " +"current_root_motion_position_accumulator\n" +" transform.origin += difference\n" +"[/gdscript]\n" +"[/codeblocks]\n" +"However, if the animation loops, an unintended discrete change may occur, so " +"this is only useful for some simple use cases." +msgstr "" +"Recupera il valore combinato delle tracce di posizione con [member " +"root_motion_track] come [Vector3] che può essere utilizzato altrove.\n" +"Ciò è utile nei casi in cui si desidera rispettare i valori della chiave " +"iniziale dell'animazione.\n" +"Ad esempio, se un'animazione con una sola chiave [code]Vector3(0, 0, 0)[/" +"code] viene riprodotta nel frame precedente e poi un'animazione con una sola " +"chiave [code]Vector3(1, 0, 1)[/code] viene riprodotta nel frame successivo, " +"la differenza può essere calcolata come segue:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var prev_root_motion_position_accumulator\n" +"\n" +"func _process(delta):\n" +" if Input.is_action_just_pressed(\"animate\"):\n" +" state_machine.travel(\"Animate\")\n" +" var current_root_motion_position_accumulator = animation_tree." +"get_root_motion_position_accumulator()\n" +" var difference = current_root_motion_position_accumulator - " +"prev_root_motion_position_accumulator\n" +" prev_root_motion_position_accumulator = " +"current_root_motion_position_accumulator\n" +" transform.origin += difference\n" +"[/gdscript]\n" +"[/codeblocks]\n" +"Tuttavia, se l'animazione si ripete, potrebbe verificarsi un cambiamento " +"discreto indesiderato, quindi questa funzionalità è utile solo per alcuni " +"casi d'uso semplici." + +msgid "" +"Retrieve the motion delta of rotation with the [member root_motion_track] as " +"a [Quaternion] that can be used elsewhere.\n" +"If [member root_motion_track] is not a path to a track of type [constant " +"Animation.TYPE_ROTATION_3D], returns [code]Quaternion(0, 0, 0, 1)[/code].\n" +"See also [member root_motion_track] and [RootMotionView].\n" +"The most basic example is applying rotation to [CharacterBody3D]:\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _process(delta):\n" +" if Input.is_action_just_pressed(\"animate\"):\n" +" state_machine.travel(\"Animate\")\n" +" set_quaternion(get_quaternion() * animation_tree." +"get_root_motion_rotation())\n" +"[/gdscript]\n" +"[/codeblocks]" +msgstr "" +"Recupera il delta del movimento di rotazione con [member root_motion_track] " +"come [Quaternion] che può essere utilizzato altrove.\n" +"Se [member root_motion_track] non è un percorso verso una traccia di tipo " +"[constant Animation.TYPE_ROTATION_3D], restituisce [code]Quaternion(0, 0, 0, " +"1)[/code].\n" +"Vedi anche [member root_motion_track] e [RootMotionView].\n" +"L'esempio più basilare è per applicare la rotazione a [CharacterBody3D]:\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _process(delta):\n" +" if Input.is_action_just_pressed(\"animate\"):\n" +" state_machine.travel(\"Animate\")\n" +" set_quaternion(get_quaternion() * animation_tree." +"get_root_motion_rotation())\n" +"[/gdscript]\n" +"[/codeblocks]" + +msgid "" +"Retrieve the blended value of the rotation tracks with the [member " +"root_motion_track] as a [Quaternion] that can be used elsewhere.\n" +"This is necessary to apply the root motion position correctly, taking " +"rotation into account. See also [method get_root_motion_position].\n" +"Also, this is useful in cases where you want to respect the initial key " +"values of the animation.\n" +"For example, if an animation with only one key [code]Quaternion(0, 0, 0, 1)[/" +"code] is played in the previous frame and then an animation with only one key " +"[code]Quaternion(0, 0.707, 0, 0.707)[/code] is played in the next frame, the " +"difference can be calculated as follows:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var prev_root_motion_rotation_accumulator\n" +"\n" +"func _process(delta):\n" +" if Input.is_action_just_pressed(\"animate\"):\n" +" state_machine.travel(\"Animate\")\n" +" var current_root_motion_rotation_accumulator = animation_tree." +"get_root_motion_rotation_accumulator()\n" +" var difference = prev_root_motion_rotation_accumulator.inverse() * " +"current_root_motion_rotation_accumulator\n" +" prev_root_motion_rotation_accumulator = " +"current_root_motion_rotation_accumulator\n" +" transform.basis *= Basis(difference)\n" +"[/gdscript]\n" +"[/codeblocks]\n" +"However, if the animation loops, an unintended discrete change may occur, so " +"this is only useful for some simple use cases." +msgstr "" +"Recupera il valore combinato delle tracce di rotazione con [member " +"root_motion_track] come [Quaternion] che può essere utilizzato altrove.\n" +"Ciò è necessario per applicare correttamente la posizione del movimento " +"radice, tenendo conto della rotazione. Vedi anche [method " +"get_root_motion_position].\n" +"Inoltre, ciò è utile nei casi in cui si desidera rispettare i valori della " +"chiave iniziale dell'animazione.\n" +"Ad esempio, se un'animazione con una sola chiave [code]Quaternion(0, 0, 0, 1)" +"[/code] viene riprodotta nel frame precedente e poi un'animazione con una " +"sola chiave [code]Quaternion(0, 0.707, 0, 0.707)[/code] viene riprodotta nel " +"frame successivo, la differenza può essere calcolata come segue:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var prev_root_motion_rotation_accumulator\n" +"\n" +"func _process(delta):\n" +" if Input.is_action_just_pressed(\"animate\"):\n" +" state_machine.travel(\"Animate\")\n" +" var current_root_motion_rotation_accumulator = animation_tree." +"get_root_motion_rotation_accumulator()\n" +" var difference = prev_root_motion_rotation_accumulator.inverse() * " +"current_root_motion_rotation_accumulator\n" +" prev_root_motion_rotation_accumulator = " +"current_root_motion_rotation_accumulator\n" +" transform.basis *= Basis(difference)\n" +"[/gdscript]\n" +"[/codeblocks]\n" +"Tuttavia, se l'animazione si ripete, potrebbe verificarsi un cambiamento " +"discreto indesiderato, quindi questa funzionalità è utile solo per alcuni " +"casi d'uso semplici." + +msgid "" +"Retrieve the motion delta of scale with the [member root_motion_track] as a " +"[Vector3] that can be used elsewhere.\n" +"If [member root_motion_track] is not a path to a track of type [constant " +"Animation.TYPE_SCALE_3D], returns [code]Vector3(0, 0, 0)[/code].\n" +"See also [member root_motion_track] and [RootMotionView].\n" +"The most basic example is applying scale to [CharacterBody3D]:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var current_scale = Vector3(1, 1, 1)\n" +"var scale_accum = Vector3(1, 1, 1)\n" +"\n" +"func _process(delta):\n" +" if Input.is_action_just_pressed(\"animate\"):\n" +" current_scale = get_scale()\n" +" scale_accum = Vector3(1, 1, 1)\n" +" state_machine.travel(\"Animate\")\n" +" scale_accum += animation_tree.get_root_motion_scale()\n" +" set_scale(current_scale * scale_accum)\n" +"[/gdscript]\n" +"[/codeblocks]" +msgstr "" +"Recupera il delta di movimento della scala con la [member root_motion_track] " +"come [Vector3] che può essere utilizzato altrove.\n" +"Se [member root_motion_track] non è un percorso verso una traccia di tipo " +"[constant Animation.TYPE_POSITION_3D], restituisce [code]Vector3(0, 0, 0)[/" +"code].\n" +"Vedi anche [member root_motion_track] e [RootMotionView].\n" +"L'esempio più basilare è l'applicazione della posizione a [CharacterBody3D]:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var current_scale = Vector3(1, 1, 1)\n" +"var scale_accum = Vector3(1, 1, 1)\n" +"\n" +"func _process(delta):\n" +" if Input.is_action_just_pressed(\"animate\"):\n" +" current_scale = get_scale()\n" +" scale_accum = Vector3(1, 1, 1)\n" +" state_machine.travel(\"Animate\")\n" +" scale_accum += animation_tree.get_root_motion_scale()\n" +" set_scale(current_scale * scale_accum)\n" +"[/gdscript]\n" +"[/codeblocks]" + +msgid "" +"Retrieve the blended value of the scale tracks with the [member " +"root_motion_track] as a [Vector3] that can be used elsewhere.\n" +"For example, if an animation with only one key [code]Vector3(1, 1, 1)[/code] " +"is played in the previous frame and then an animation with only one key " +"[code]Vector3(2, 2, 2)[/code] is played in the next frame, the difference can " +"be calculated as follows:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var prev_root_motion_scale_accumulator\n" +"\n" +"func _process(delta):\n" +" if Input.is_action_just_pressed(\"animate\"):\n" +" state_machine.travel(\"Animate\")\n" +" var current_root_motion_scale_accumulator = animation_tree." +"get_root_motion_scale_accumulator()\n" +" var difference = current_root_motion_scale_accumulator - " +"prev_root_motion_scale_accumulator\n" +" prev_root_motion_scale_accumulator = " +"current_root_motion_scale_accumulator\n" +" transform.basis = transform.basis.scaled(difference)\n" +"[/gdscript]\n" +"[/codeblocks]\n" +"However, if the animation loops, an unintended discrete change may occur, so " +"this is only useful for some simple use cases." +msgstr "" +"Recupera il valore combinato delle tracce di scala con [member " +"root_motion_track] come [Vector3] che può essere utilizzato altrove.\n" +"Ad esempio, se un'animazione con una sola chiave [code]Vector3(1, 1, 1)[/" +"code] viene riprodotta nel frame precedente e poi un'animazione con una sola " +"chiave [code]Vector3(2, 2, 2)[/code] viene riprodotta nel frame successivo, " +"la differenza può essere calcolata come segue:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var prev_root_motion_scale_accumulator\n" +"\n" +"func _process(delta):\n" +" if Input.is_action_just_pressed(\"animate\"):\n" +" state_machine.travel(\"Animate\")\n" +" var current_root_motion_scale_accumulator = animation_tree." +"get_root_motion_scale_accumulator()\n" +" var difference = current_root_motion_scale_accumulator - " +"prev_root_motion_scale_accumulator\n" +" prev_root_motion_scale_accumulator = " +"current_root_motion_scale_accumulator\n" +" transform.basis = transform.basis.scaled(difference)\n" +"[/gdscript]\n" +"[/codeblocks]\n" +"Tuttavia, se l'animazione si ripete, potrebbe verificarsi un cambiamento " +"discreto indesiderato, quindi questa funzionalità è utile solo per alcuni " +"casi d'uso semplici." + msgid "" "Returns [code]true[/code] if the [AnimationMixer] stores an [Animation] with " "key [param name]." @@ -7789,6 +10224,16 @@ msgstr "" "animazioni nell'editor, in quanto le modifiche alla scena non saranno salvate " "finché sono impostate nell'animazione di reset." +msgid "" +"If [code]true[/code], [method get_root_motion_position] value is extracted as " +"a local translation value before blending. In other words, it is treated like " +"the translation is done after the rotation." +msgstr "" +"Se [code]true[/code], il valore da [method get_root_motion_position] viene " +"estratto come valore di traslazione locale prima della fusione. In altre " +"parole, viene trattato come se la traslazione fosse stata effettuata dopo la " +"rotazione." + msgid "" "The path to the Animation track used for root motion. Paths must be valid " "scene-tree paths to a node, and must be specified starting from the parent " @@ -7914,13 +10359,218 @@ msgstr "" "Animation.UPDATE_DISCRETE]. Questo è il comportamento predefinito per " "[AnimationPlayer]." +msgid "" +"Always treat the [constant Animation.UPDATE_DISCRETE] track value as " +"[constant Animation.UPDATE_CONTINUOUS] with [constant Animation." +"INTERPOLATION_NEAREST]. This is the default behavior for [AnimationTree].\n" +"If a value track has un-interpolatable type key values, it is internally " +"converted to use [constant ANIMATION_CALLBACK_MODE_DISCRETE_RECESSIVE] with " +"[constant Animation.UPDATE_DISCRETE].\n" +"Un-interpolatable type list:\n" +"- [constant @GlobalScope.TYPE_NIL]\n" +"- [constant @GlobalScope.TYPE_NODE_PATH]\n" +"- [constant @GlobalScope.TYPE_RID]\n" +"- [constant @GlobalScope.TYPE_OBJECT]\n" +"- [constant @GlobalScope.TYPE_CALLABLE]\n" +"- [constant @GlobalScope.TYPE_SIGNAL]\n" +"- [constant @GlobalScope.TYPE_DICTIONARY]\n" +"- [constant @GlobalScope.TYPE_PACKED_BYTE_ARRAY]\n" +"[constant @GlobalScope.TYPE_BOOL] and [constant @GlobalScope.TYPE_INT] are " +"treated as [constant @GlobalScope.TYPE_FLOAT] during blending and rounded " +"when the result is retrieved.\n" +"It is same for arrays and vectors with them such as [constant @GlobalScope." +"TYPE_PACKED_INT32_ARRAY] or [constant @GlobalScope.TYPE_VECTOR2I], they are " +"treated as [constant @GlobalScope.TYPE_PACKED_FLOAT32_ARRAY] or [constant " +"@GlobalScope.TYPE_VECTOR2]. Also note that for arrays, the size is also " +"interpolated.\n" +"[constant @GlobalScope.TYPE_STRING] and [constant @GlobalScope." +"TYPE_STRING_NAME] are interpolated between character codes and lengths, but " +"note that there is a difference in algorithm between interpolation between " +"keys and interpolation by blending." +msgstr "" +"Tratta sempre il valore della traccia [constant Animation.UPDATE_DISCRETE] " +"come [constant Animation.UPDATE_CONTINUOUS] con [constant Animation." +"INTERPOLATION_NEAREST]. Questo è il comportamento predefinito per " +"[AnimationTree].\n" +"Se una traccia di valore ha valori di chiave di tipo non interpolabili, viene " +"convertita internamente per usare [constant " +"ANIMATION_CALLBACK_MODE_DISCRETE_RECESSIVE] con [constant Animation." +"UPDATE_DISCRETE].\n" +"[constant @GlobalScope.TYPE_BOOL] e [constant @GlobalScope.TYPE_INT] vengono " +"trattati come [constant @GlobalScope.TYPE_FLOAT] durante la fusione e " +"arrotondati quando il risultato viene recuperato.\n" +"Lista di tipi che non si possono interpolare:\n" +"- [constant @GlobalScope.TYPE_NIL]\n" +"- [constant @GlobalScope.TYPE_NODE_PATH]\n" +"- [constant @GlobalScope.TYPE_RID]\n" +"- [constant @GlobalScope.TYPE_OBJECT]\n" +"- [constant @GlobalScope.TYPE_CALLABLE]\n" +"- [constant @GlobalScope.TYPE_SIGNAL]\n" +"- [constant @GlobalScope.TYPE_DICTIONARY]\n" +"- [constant @GlobalScope.TYPE_PACKED_BYTE_ARRAY]\n" +"Lo stesso vale per array e vettori, come [constant @GlobalScope." +"TYPE_PACKED_INT32_ARRAY] o [constant @GlobalScope.TYPE_VECTOR2I], vengono " +"trattati come [constant @GlobalScope.TYPE_PACKED_FLOAT32_ARRAY] o [constant " +"@GlobalScope.TYPE_VECTOR2]. Nota inoltre che per gli array, anche la " +"dimensione viene interpolata.\n" +"[constant @GlobalScope.TYPE_STRING] e [constant @GlobalScope." +"TYPE_STRING_NAME] vengono interpolate tra codici carattere e lunghezze, ma si " +"noti che esiste una differenza nell'algoritmo tra l'interpolazione tra chiavi " +"e l'interpolazione tramite fusione." + msgid "Base class for [AnimationTree] nodes. Not related to scene nodes." msgstr "" "Classe di base per nodi [AnimationTree]. Non riguarda i nodi della scena." +msgid "" +"Base resource for [AnimationTree] nodes. In general, it's not used directly, " +"but you can create custom ones with custom blending formulas.\n" +"Inherit this when creating animation nodes mainly for use in " +"[AnimationNodeBlendTree], otherwise [AnimationRootNode] should be used " +"instead.\n" +"You can access the time information as read-only parameter which is processed " +"and stored in the previous frame for all nodes except [AnimationNodeOutput].\n" +"[b]Note:[/b] If multiple inputs exist in the [AnimationNode], which time " +"information takes precedence depends on the type of [AnimationNode].\n" +"[codeblock]\n" +"var current_length = $AnimationTree[parameters/AnimationNodeName/" +"current_length]\n" +"var current_position = $AnimationTree[parameters/AnimationNodeName/" +"current_position]\n" +"var current_delta = $AnimationTree[parameters/AnimationNodeName/" +"current_delta]\n" +"[/codeblock]" +msgstr "" +"Risorsa base per i nodi [AnimationTree]. In genere, non viene utilizzata " +"direttamente, ma puoi crearne di personalizzate, con formule di fusione " +"personalizzate.\n" +"Eredita questo quando crei nodi di animazione principalmente per l'uso in " +"[AnimationNodeBlendTree], altrimenti dovrebbe essere utilizzato " +"[AnimationRootNode].\n" +"È possibile accedere alle informazioni sul tempo come parametro di sola " +"lettura, che vengono elaborati e memorizzati nel frame precedente per tutti i " +"nodi eccetto [AnimationNodeOutput].\n" +"[b]Nota:[/b] Se sono presenti più input nell'[AnimationNode], le informazioni " +"sul tempo che hanno la precedenza dipendono dal tipo di [AnimationNode].\n" +"[codeblock]\n" +"var current_length = $AnimationTree[parameters/AnimationNodeName/" +"current_length]\n" +"var current_position = $AnimationTree[parameters/AnimationNodeName/" +"current_position]\n" +"var current_delta = $AnimationTree[parameters/AnimationNodeName/" +"current_delta]\n" +"[/codeblock]" + msgid "Using AnimationTree" msgstr "Utilizzare l'AnimationTree" +msgid "" +"When inheriting from [AnimationRootNode], implement this virtual method to " +"override the text caption for this animation node." +msgstr "" +"Quando si eredita da [AnimationRootNode], implementare questo metodo virtuale " +"per sovrascrivere la didascalia di testo per questo nodo di animazione." + +msgid "" +"When inheriting from [AnimationRootNode], implement this virtual method to " +"return a child animation node by its [param name]." +msgstr "" +"Quando si eredita da [AnimationRootNode], implementare questo metodo virtuale " +"per restituire un nodo di animazione figlio dal nome [param name]." + +msgid "" +"When inheriting from [AnimationRootNode], implement this virtual method to " +"return all child animation nodes in order as a [code]name: node[/code] " +"dictionary." +msgstr "" +"Quando si eredita da [AnimationRootNode], implementare questo metodo virtuale " +"per restituire tutti i nodi di animazione figlio in ordine, sotto forma di un " +"dizionario [code]nome: nodo[/code]." + +msgid "" +"When inheriting from [AnimationRootNode], implement this virtual method to " +"return the default value of a [param parameter]. Parameters are custom local " +"memory used for your animation nodes, given a resource can be reused in " +"multiple trees." +msgstr "" +"Quando si eredita da [AnimationRootNode], implementare questo metodo virtuale " +"per restituire il valore predefinito del parametro [param parameter]. I " +"parametri sono memoria locale personalizzata utilizzata per i nodi di " +"animazione, poiché una risorsa può essere riutilizzata in più alberi." + +msgid "" +"When inheriting from [AnimationRootNode], implement this virtual method to " +"return a list of the properties on this animation node. Parameters are custom " +"local memory used for your animation nodes, given a resource can be reused in " +"multiple trees. Format is similar to [method Object.get_property_list]." +msgstr "" +"Quando si eredita da [AnimationRootNode], implementare questo metodo virtuale " +"per restituire una lista di proprietà in questo nodo di animazione. I " +"parametri sono memoria locale personalizzata utilizzata per i nodi di " +"animazione, poiché una risorsa può essere riutilizzata in più alberi. Il " +"formato è simile a [method Object.get_property_list]." + +msgid "" +"When inheriting from [AnimationRootNode], implement this virtual method to " +"return whether the [param parameter] is read-only. Parameters are custom " +"local memory used for your animation nodes, given a resource can be reused in " +"multiple trees." +msgstr "" +"Quando si eredita da [AnimationRootNode], implementare questo metodo virtuale " +"per restituire se il parametro [param parameter] è di sola lettura. I " +"parametri sono memoria locale personalizzata utilizzata per i nodi di " +"animazione, poiché una risorsa può essere riutilizzata in più alberi." + +msgid "" +"Currently this is mostly useless as there is a lack of many APIs to extend " +"AnimationNode by GDScript. It is planned that a more flexible API using " +"structures will be provided in the future." +msgstr "" +"Attualmente questo è per lo più inutile in quanto mancano molte API per " +"estendere AnimationNode attraverso GDScript. Si prevede che in futuro sarà " +"fornita un'API più flessibile che utilizzi le strutture." + +msgid "" +"When inheriting from [AnimationRootNode], implement this virtual method to " +"run some code when this animation node is processed. The [param time] " +"parameter is a relative delta, unless [param seek] is [code]true[/code], in " +"which case it is absolute.\n" +"Here, call the [method blend_input], [method blend_node] or [method " +"blend_animation] functions. You can also use [method get_parameter] and " +"[method set_parameter] to modify local memory.\n" +"This function should return the delta." +msgstr "" +"Quando si eredita da [AnimationRootNode], implementare questo metodo virtuale " +"per eseguire codice quando questo nodo di animazione viene elaborato. Il " +"parametro [param time] è un tempo delta relativo, a meno che [param seek] non " +"sia [code]true[/code], nel qual caso è assoluto.\n" +"Qui, chiama le funzioni [method blend_input], [method blend_node] o [method " +"blend_animation]. È anche possibile usare [method get_parameter] e [method " +"set_parameter] per modificare la memoria locale.\n" +"Questa funzione dovrebbe restituire il delta." + +msgid "" +"Adds an input to the animation node. This is only useful for animation nodes " +"created for use in an [AnimationNodeBlendTree]. If the addition fails, " +"returns [code]false[/code]." +msgstr "" +"Aggiunge un input al nodo di animazione. È utile solo per i nodi di " +"animazione creati per l'uso in un [AnimationNodeBlendTree]. Se l'aggiunta " +"fallisce, restituisce [code]false[/code]." + +msgid "" +"Blend an animation by [param blend] amount (name must be valid in the linked " +"[AnimationPlayer]). A [param time] and [param delta] may be passed, as well " +"as whether [param seeked] happened.\n" +"A [param looped_flag] is used by internal processing immediately after the " +"loop. See also [enum Animation.LoopedFlag]." +msgstr "" +"Combina un'animazione della quantità [param blend] (il nome deve essere " +"valido nell'[AnimationPlayer] collegato). È possibile passare un tempo [param " +"time] e un [param delta], nonché se [param seeked] è avvenuto.\n" +"Un [param looped_flag] viene utilizzato dall'elaborazione interna " +"immediatamente dopo la ripetizione. Vedi anche [enum Animation.LoopedFlag]." + msgid "" "Blend an input. This is only useful for animation nodes created for an " "[AnimationNodeBlendTree]. The [param time] parameter is a relative delta, " @@ -7969,6 +10619,27 @@ msgstr "" "personalizzata utilizzata per i nodi di animazione, dato che una risorsa può " "essere riutilizzata in più alberi." +msgid "" +"Returns the object id of the [AnimationTree] that owns this node.\n" +"[b]Note:[/b] This method should only be called from within the [method " +"AnimationNodeExtension._process_animation_node] method, and will return an " +"invalid id otherwise." +msgstr "" +"Restituisce l'ID oggetto dell'[AnimationTree] che possiede questo nodo.\n" +"[b]Nota:[/b] Questo metodo dovrebbe essere chiamato solo dall'interno del " +"metodo [method AnimationNodeExtension._process_animation_node], altrimenti " +"restituirà un ID non valido." + +msgid "Returns [code]true[/code] if the given path is filtered." +msgstr "Restituisce [code]true[/code] se il percorso specificato è filtrato." + +msgid "" +"Returns [code]true[/code] if this animation node is being processed in test-" +"only mode." +msgstr "" +"Restituisce [code]true[/code] se questo nodo d'animazione è in elaborazione " +"in modalità di solo test." + msgid "Removes an input, call this only when inactive." msgstr "Rimuove un'ingresso, richiama questo metodo solo quando inattivo." @@ -8048,9 +10719,128 @@ msgstr "" "Fonde due animazioni in modo additivo all'interno di un " "[AnimationNodeBlendTree]." +msgid "" +"A resource to add to an [AnimationNodeBlendTree]. Blends two animations " +"additively based on the amount value.\n" +"If the amount is greater than [code]1.0[/code], the animation connected to " +"\"in\" port is blended with the amplified animation connected to \"add\" " +"port.\n" +"If the amount is less than [code]0.0[/code], the animation connected to " +"\"in\" port is blended with the inverted animation connected to \"add\" port." +msgstr "" +"Una risorsa da aggiungere a un [AnimationNodeBlendTree]. Combina due " +"animazioni in modo additivo in base al valore di quantità.\n" +"Se la quantità è maggiore di [code]1.0[/code], l'animazione collegata alla " +"porta \"in\" viene combinata all'animazione amplificata collegata alla porta " +"\"add\".\n" +"Se la quantità è minore di [code]0.0[/code], l'animazione collegata alla " +"porta \"in\" viene combinata all'animazione invertita collegata alla porta " +"\"add\"." + +msgid "" +"Blends two of three animations additively inside of an " +"[AnimationNodeBlendTree]." +msgstr "" +"Fonde due delle tre animazioni in modo additivo all'interno di un " +"[AnimationNodeBlendTree]." + +msgid "" +"A resource to add to an [AnimationNodeBlendTree]. Blends two animations out " +"of three additively out of three based on the amount value.\n" +"This animation node has three inputs:\n" +"- The base animation to add to\n" +"- A \"-add\" animation to blend with when the blend amount is negative\n" +"- A \"+add\" animation to blend with when the blend amount is positive\n" +"If the absolute value of the amount is greater than [code]1.0[/code], the " +"animation connected to \"in\" port is blended with the amplified animation " +"connected to \"-add\"/\"+add\" port." +msgstr "" +"Una risorsa da aggiungere a un [AnimationNodeBlendTree]. Combina due " +"animazioni su tre in modo additivo su tre in base al valore di quantità.\n" +"Questo nodo di animazione ha tre ingressi:\n" +"- L'animazione base a cui aggiungere\n" +"- Un'animazione \"-add\" con cui fondersi quando l'importo di fusione è " +"negativo\n" +"- Un'animazione \"+add\" con cui fondersi quando l'importo di fusione è " +"positivo\n" +"Se il valore assoluto di quantità è maggiore di [code]1.0[/code], " +"l'animazione connessa alla porta \"in\" viene fusa con l'animazione " +"amplificata connessa alla porta \"-add\"/\"+add\"." + +msgid "An input animation for an [AnimationNodeBlendTree]." +msgstr "Un'animazione d'ingresso per un [AnimationNodeBlendTree]." + +msgid "" +"A resource to add to an [AnimationNodeBlendTree]. Only has one output port " +"using the [member animation] property. Used as an input for [AnimationNode]s " +"that blend animations together." +msgstr "" +"Una risorsa da aggiungere a un [AnimationNodeBlendTree]. Ha una sola porta " +"d'uscita che usa la proprietà [member animation]. Usata come ingresso per " +"[AnimationNode] che fondono le animazioni insieme." + +msgid "3D Platformer Demo" +msgstr "Demo di gioco piattaforme 3D" + +msgid "" +"Animation to use as an output. It is one of the animations provided by " +"[member AnimationTree.anim_player]." +msgstr "" +"Animazione da usare come uscita. È una delle animazioni fornite da [member " +"AnimationTree.anim_player]." + +msgid "" +"If [member use_custom_timeline] is [code]true[/code], override the loop " +"settings of the original [Animation] resource with the value.\n" +"[b]Note:[/b] If the [member Animation.loop_mode] isn't set to looping, the " +"[method Animation.track_set_interpolation_loop_wrap] option will not be " +"respected. If you cannot get the expected behavior, consider duplicating the " +"[Animation] resource and changing the loop settings." +msgstr "" +"Se [member use_custom_timeline] è [code]true[/code], sovrascrive le " +"impostazioni del ciclo della risorsa [Animation] originale con il valore.\n" +"[b]Nota:[/b] Se [member Animation.loop_mode] non è impostato per ripetersi, " +"l'opzione [method Animation.track_set_interpolation_loop_wrap] non sarà " +"rispettata. Se non riesci a ottenere il comportamento previsto, considera di " +"duplicare la risorsa [Animation] e di modificare le impostazioni di " +"ripetizione." + msgid "Determines the playback direction of the animation." msgstr "Restituisce la direzione di riproduzione dell'animazione." +msgid "" +"If [member use_custom_timeline] is [code]true[/code], offset the start " +"position of the animation.\n" +"This is useful for adjusting which foot steps first in 3D walking animations." +msgstr "" +"Se [member use_custom_timeline] è [code]true[/code], sposta la posizione " +"iniziale dell'animazione.\n" +"Questa funzione è utile per stabilire quale piede deve camminare per primo " +"nelle animazioni di camminata in 3D." + +msgid "" +"If [code]true[/code], scales the time so that the length specified in [member " +"timeline_length] is one cycle.\n" +"This is useful for matching the periods of walking and running animations.\n" +"If [code]false[/code], the original animation length is respected. If you set " +"the loop to [member loop_mode], the animation will loop in [member " +"timeline_length]." +msgstr "" +"Se [code]true[/code], ridimensiona il tempo in modo che la lunghezza " +"specificata in [member timeline_length] sia un solo ciclo.\n" +"Questa funzione è utile per abbinare i periodi delle animazioni di camminata " +"e corsa.\n" +"Se [code]false[/code], la lunghezza dell'animazione originale è rispettata. " +"Se si imposta il ciclo su [member loop_mode], l'animazione sarà ripetuta in " +"[member timeline_length]." + +msgid "" +"If [member use_custom_timeline] is [code]true[/code], offset the start " +"position of the animation." +msgstr "" +"Se [member use_custom_timeline] è [code]true[/code], sposta la posizione " +"iniziale dell'animazione." + msgid "" "If [code]true[/code], [AnimationNode] provides an animation based on the " "[Animation] resource with some parameters adjusted." @@ -8058,6 +10848,70 @@ msgstr "" "Se [code]true[/code], l'[AnimationNode] fornisce un'animazione basata sulla " "risorsa [Animation] con alcuni parametri aggiustati." +msgid "Plays animation in forward direction." +msgstr "Riproduce l'animazione in avanti." + +msgid "Plays animation in backward direction." +msgstr "Riproduce l'animazione all'indietro." + +msgid "Blends two animations linearly inside of an [AnimationNodeBlendTree]." +msgstr "" +"Fonde due animazioni in modo lineare all'interno di un " +"[AnimationNodeBlendTree]." + +msgid "" +"A resource to add to an [AnimationNodeBlendTree]. Blends two animations " +"linearly based on the amount value.\n" +"In general, the blend value should be in the [code][0.0, 1.0][/code] range. " +"Values outside of this range can blend amplified or inverted animations, " +"however, [AnimationNodeAdd2] works better for this purpose." +msgstr "" +"Una risorsa da aggiungere a un [AnimationNodeBlendTree]. Fonde due animazioni " +"in modo lineare in base al valore di quantità.\n" +"In generale, il valore della fusione dovrebbe essere compreso nell'intervallo " +"[code][0.0, 1.0][/code]. I valori al di fuori di questo intervallo possono " +"fondere animazioni amplificate o invertite. Tuttavia, [AnimationNodeAdd2] " +"funziona meglio per questo scopo." + +msgid "" +"Blends two of three animations linearly inside of an [AnimationNodeBlendTree]." +msgstr "" +"Fonde linearmente due su tre animazioni all'interno di un " +"[AnimationNodeBlendTree]." + +msgid "" +"A resource to add to an [AnimationNodeBlendTree]. Blends two animations out " +"of three linearly out of three based on the amount value.\n" +"This animation node has three inputs:\n" +"- The base animation to blend with\n" +"- A \"-blend\" animation to blend with when the blend amount is negative " +"value\n" +"- A \"+blend\" animation to blend with when the blend amount is positive " +"value\n" +"In general, the blend value should be in the [code][-1.0, 1.0][/code] range. " +"Values outside of this range can blend amplified animations, however, " +"[AnimationNodeAdd3] works better for this purpose." +msgstr "" +"Una risorsa da aggiungere a un [AnimationNodeBlendTree]. Fonde linearmente " +"due animazioni su tre in base al valore di quantità.\n" +"Questo nodo di animazione ha tre ingressi:\n" +"- L'animazione di base da fondere\n" +"- Un'animazione \"-blend\" per fondersi quando la quantità di fusione è un " +"valore negativo\n" +"- Un'animazione \"+blend\" per fondersi quando la quantità di fusione è un " +"valore positivo\n" +"In generale, il valore di fusione dovrebbe essere compreso nell'intervallo " +"[code][-1.0, 1.0][/code]. I valori al di fuori di questo intervallo possono " +"fondere animazioni amplificate. Tuttavia, [AnimationNodeAdd3] funziona meglio " +"per questo scopo." + +msgid "" +"A set of [AnimationRootNode]s placed on a virtual axis, crossfading between " +"the two adjacent ones. Used by [AnimationTree]." +msgstr "" +"Una serie di [AnimationRootNode] posizionati su un asse virtuale, con " +"dissolvenza incrociata tra i due adiacenti. Utilizzato da [AnimationTree]." + msgid "" "A resource used by [AnimationNodeBlendTree].\n" "[AnimationNodeBlendSpace1D] represents a virtual axis on which any type of " @@ -8379,6 +11233,74 @@ msgstr "I nodi in ingresso e in uscita sono gli stessi." msgid "The specified connection already exists." msgstr "La connessione specificata esiste già." +msgid "Base class for extending [AnimationRootNode]s from GDScript, C#, or C++." +msgstr "" +"Classe base per estendere gli [AnimationRootNode] da GDScript, C# o C++." + +msgid "" +"[AnimationNodeExtension] exposes the APIs of [AnimationRootNode] to allow " +"users to extend it from GDScript, C#, or C++. This class is not meant to be " +"used directly, but to be extended by other classes. It is used to create " +"custom nodes for the [AnimationTree] system." +msgstr "" +"[AnimationNodeExtension] espone le API di [AnimationRootNode] per consentire " +"agli utenti di estenderlo da GDScript, C# o C++. Questa classe non è pensata " +"per essere usata direttamente, ma per essere estesa da altre classi. È " +"utilizzata per creare nodi personalizzati per il sistema di [AnimationTree]." + +msgid "" +"A version of the [method AnimationNode._process] method that is meant to be " +"overridden by custom nodes. It returns a [PackedFloat32Array] with the " +"processed animation data.\n" +"The [PackedFloat64Array] parameter contains the playback information, " +"containing the following values encoded as floating point numbers (in order): " +"playback time and delta, start and end times, whether a seek was requested " +"(encoded as a float greater than [code]0[/code]), whether the seek request " +"was externally requested (encoded as a float greater than [code]0[/code]), " +"the current [enum Animation.LoopedFlag] (encoded as a float), and the current " +"blend weight.\n" +"The function must return a [PackedFloat32Array] of the node's time info, " +"containing the following values (in order): animation length, time position, " +"delta, [enum Animation.LoopMode] (encoded as a float), whether the animation " +"is about to end (encoded as a float greater than [code]0[/code]) and whether " +"the animation is infinite (encoded as a float greater than [code]0[/code]). " +"All values must be included in the returned array." +msgstr "" +"Una versione del metodo [method AnimationNode._process] che è pensata per " +"essere sovrascritta dai nodi personalizzati. Restituisce un " +"[PackedFloat32Array] con i dati di animazione elaborati.\n" +"Il parametro [PackedFloat64Array] contiene le informazioni di riproduzione, " +"con i seguenti valori codificati come numeri in virgola mobile (in ordine): " +"tempo di riproduzione e delta, tempo di inizio e fine, se è stata richiesta " +"una ricerca (codificata come un float maggiore di [code]0[/code]), se la " +"richiesta di ricerca è stata richiesta esternamente (codificata come un float " +"maggiore di [code]0[/code]), il [enum Animation.LoopedFlag] attuale " +"(codificato come un float) e l'attuale peso di fusione.\n" +"La funzione deve restituire un [PackedFloat32Array] delle informazioni " +"temporali del nodo, contenente i seguenti valori (in ordine): durata " +"dell'animazione, posizione nel tempo, delta, [enum Animation.LoopMode] " +"(codificato come float), se l'animazione sta per terminare (codificato come " +"float maggiore di [code]0[/code]) e se l'animazione è infinita (codificato " +"come float maggiore di [code]0[/code]). Tutti i valori devono essere inclusi " +"nell'array restituito." + +msgid "" +"Returns the animation's remaining time for the given node info. For looping " +"animations, it will only return the remaining time if [param break_loop] is " +"[code]true[/code], a large integer value will be returned otherwise." +msgstr "" +"Restituisce il tempo rimanente dell'animazione per le informazioni sul nodo " +"specificate. Per le animazioni in ripetizione, verrà restituito il tempo " +"rimanente solo se [param break_loop] è [code]true[/code], altrimenti verrà " +"restituito un valore intero alto." + +msgid "" +"Returns [code]true[/code] if the animation for the given [param node_info] is " +"looping." +msgstr "" +"Restituisce [code]true[/code] se l'animazione per il [param node_info] " +"fornito è in ripetizione." + msgid "Plays an animation once in an [AnimationNodeBlendTree]." msgstr "Riproduce un'animazione una sola volta in un [AnimationNodeBlendTree]." @@ -8444,13 +11366,68 @@ msgid "" "[/codeblocks]" msgstr "" "Una risorsa da aggiungere a un [AnimationNodeBlendTree]. Questo nodo di " -"animazione eseguirà una sotto-animazione e tornerà una volta terminata. I " -"tempi di fusione per dissolvenza in entrata e in uscita possono essere " -"personalizzati, così come i filtri.\n" +"animazione eseguirà una sotto-animazione e tornerà una volta terminata. È " +"possibile personalizzare i tempi di fusione per la dissolvenza in entrata e " +"in uscita, così come i filtri.\n" "Dopo aver impostato la richiesta e modificato la riproduzione " "dell'animazione, il nodo a colpo singolo cancella automaticamente la " "richiesta sul frame di processo successivo impostando il suo valore di " -"[code]request[/code] su [constant ONE_SHOT_REQUEST_NONE]." +"[code]request[/code] su [constant ONE_SHOT_REQUEST_NONE].\n" +"[codeblocks]\n" +"[gdscript]\n" +"# Riproduci l'animazione figlio collegata alla porta \"shot\".\n" +"animation_tree.set(\"parameters/OneShot/request\", AnimationNodeOneShot." +"ONE_SHOT_REQUEST_FIRE)\n" +"# Sintassi alternativa (stesso risultato di sopra).\n" +"animation_tree[\"parameters/OneShot/request\"] = AnimationNodeOneShot." +"ONE_SHOT_REQUEST_FIRE\n" +"\n" +"# Interrompi l'animazione figlio collegata alla porta \"shot\".\n" +"animation_tree.set(\"parameters/OneShot/request\", AnimationNodeOneShot." +"ONE_SHOT_REQUEST_ABORT)\n" +"# Sintassi alternativa (stesso risultato di sopra).\n" +"animation_tree[\"parameters/OneShot/request\"] = AnimationNodeOneShot." +"ONE_SHOT_REQUEST_ABORT\n" +"\n" +"# Interrompi l'animazione figlio con dissolvenza in uscita collegata alla " +"porta \"shot\".\n" +"animation_tree.set(\"parameters/OneShot/request\", AnimationNodeOneShot." +"ONE_SHOT_REQUEST_FADE_OUT)\n" +"# Sintassi alternativa (stesso risultato di sopra).\n" +"animation_tree[\"parameters/OneShot/request\"] = AnimationNodeOneShot." +"ONE_SHOT_REQUEST_FADE_OUT\n" +"\n" +"# Ottieni lo stato attuale (di sola lettura).\n" +"animation_tree.get(\"parameters/OneShot/active\")\n" +"# Sintassi alternativa (stesso risultato di sopra).\n" +"animation_tree[\"parameters/OneShot/active\"]\n" +"\n" +"# Ottieni lo stato interno attuale (di sola lettura).\n" +"animation_tree.get(\"parameters/OneShot/internal_active\")\n" +"# Sintassi alternativa (stesso risultato di sopra).\n" +"animation_tree[\"parameters/OneShot/internal_active\"]\n" +"[/gdscript]\n" +"[csharp]\n" +"// Riproduci l'animazione figlio collegata alla porta \"shot\".\n" +"animationTree.Set(\"parameters/OneShot/request\", (int)AnimationNodeOneShot." +"OneShotRequest.Fire);\n" +"\n" +"// Interrompi l'animazione figlio collegata alla porta \"shot\".\n" +"animationTree.Set(\"parameters/OneShot/request\", (int)AnimationNodeOneShot." +"OneShotRequest.Abort);\n" +"\n" +"// Interrompi l'animazione figlio con dissolvenza in uscita collegata alla " +"porta \"shot\".\n" +"animationTree.Set(\"parameters/OneShot/request\", (int)AnimationNodeOneShot." +"OneShotRequest.FadeOut);\n" +"\n" +"// Ottieni lo stato attuale (di sola lettura).\n" +"animationTree.Get(\"parameters/OneShot/active\");\n" +"\n" +"// Ottieni lo stato interno attuale (di sola lettura).\n" +"animationTree.Get(\"parameters/OneShot/internal_active\");\n" +"[/csharp]\n" +"[/codeblocks]" msgid "" "If [code]true[/code], the sub-animation will restart automatically after " @@ -8482,6 +11459,14 @@ msgstr "" "(in secondi) tra 0 e questo valore verrà aggiunto a [member " "autorestart_delay]." +msgid "" +"Determines how cross-fading between animations is eased. If empty, the " +"transition will be linear. Should be a unit [Curve]." +msgstr "" +"Determina il modo in cui la dissolvenza incrociata tra le animazioni è " +"allentata. Se vuoto, la transizione sarà lineare. Dovrebbe essere una [Curve] " +"unitaria." + msgid "" "The fade-in duration. For example, setting this to [code]1.0[/code] for a 5 " "second length animation will produce a cross-fade that starts at 0 second and " @@ -8545,10 +11530,10 @@ msgstr "" "\"shot\"." msgid "Blends two animations. See also [AnimationNodeBlend2]." -msgstr "Mischia due animazioni. Vedi anche [AnimationNodeBlend2]." +msgstr "Fonde due animazioni. Vedi anche [AnimationNodeBlend2]." msgid "Blends two animations additively. See also [AnimationNodeAdd2]." -msgstr "Mischia due animazioni additivamente. Vedi anche [AnimationNodeAdd2]." +msgstr "Fonde due animazioni additivamente. Vedi anche [AnimationNodeAdd2]." msgid "The animation output node of an [AnimationNodeBlendTree]." msgstr "Il nodo di animazione in uscita di un [AnimationNodeBlendTree]." @@ -8565,6 +11550,41 @@ msgid "" msgstr "" "Una macchina a stati con più [AnimationRootNode], usata da [AnimationTree]." +msgid "" +"Contains multiple [AnimationRootNode]s representing animation states, " +"connected in a graph. State transitions can be configured to happen " +"automatically or via code, using a shortest-path algorithm. Retrieve the " +"[AnimationNodeStateMachinePlayback] object from the [AnimationTree] node to " +"control it programmatically.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var state_machine = $AnimationTree.get(\"parameters/playback\")\n" +"state_machine.travel(\"some_state\")\n" +"[/gdscript]\n" +"[csharp]\n" +"var stateMachine = GetNode(\"AnimationTree\").Get(\"parameters/" +"playback\") as AnimationNodeStateMachinePlayback;\n" +"stateMachine.Travel(\"some_state\");\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"Contiene più [AnimationRootNode] che rappresentano gli stati di animazione, " +"collegati in un grafico. È possibile configurare le transizioni di stato per " +"svolgersi automaticamente o tramite codice, utilizzando un algoritmo di " +"percorso più breve. Recupera l'oggetto [AnimationNodeStateMachinePlayback] " +"dal nodo [AnimationTree] per controllarlo programmaticamente.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var state_machine = $AnimationTree.get(\"parameters/playback\")\n" +"state_machine.travel(\"some_state\")\n" +"[/gdscript]\n" +"[csharp]\n" +"var stateMachine = GetNode(\"AnimationTree\").Get(\"parameters/" +"playback\") as AnimationNodeStateMachinePlayback;\n" +"stateMachine.Travel(\"some_state\");\n" +"[/csharp]\n" +"[/codeblocks]" + msgid "" "Adds a new animation node to the graph. The [param position] is used for " "display in the editor." @@ -8680,6 +11700,24 @@ msgstr "" "Questa proprietà può definire il processo delle transizioni per diversi casi " "d'uso. Vedi anche [enum AnimationNodeStateMachine.StateMachineType]." +msgid "" +"Seeking to the beginning is treated as playing from the start state. " +"Transition to the end state is treated as exiting the state machine." +msgstr "" +"Cercare all'inizio è considerato come una riproduzione dallo stato iniziale. " +"La transizione allo stato finale è considerata come un'uscita dalla macchina " +"a stati." + +msgid "" +"Seeking to the beginning is treated as seeking to the beginning of the " +"animation in the current state. Transition to the end state, or the absence " +"of transitions in each state, is treated as exiting the state machine." +msgstr "" +"Cercare all'inizio è considerato come cercare all'inizio dell'animazione " +"nello stato attuale. La transizione allo stato finale, o l'assenza di " +"transizioni in ogni stato, è considerata come un'uscita dalla macchina a " +"stati." + msgid "" "This is a grouped state machine that can be controlled from a parent state " "machine. It does not work independently. There must be a state machine with " @@ -8696,6 +11734,37 @@ msgid "Provides playback control for an [AnimationNodeStateMachine]." msgstr "" "Fornisce il controllo della riproduzione per un [AnimationNodeStateMachine]." +msgid "" +"Allows control of [AnimationTree] state machines created with " +"[AnimationNodeStateMachine]. Retrieve with [code]$AnimationTree." +"get(\"parameters/playback\")[/code].\n" +"[codeblocks]\n" +"[gdscript]\n" +"var state_machine = $AnimationTree.get(\"parameters/playback\")\n" +"state_machine.travel(\"some_state\")\n" +"[/gdscript]\n" +"[csharp]\n" +"var stateMachine = GetNode(\"AnimationTree\").Get(\"parameters/" +"playback\").As();\n" +"stateMachine.Travel(\"some_state\");\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"Permette il controllo delle macchine a stati create con " +"[AnimationNodeStateMachine] in un [AnimationTree]. Recuperato con " +"[code]$AnimationTree.get(\"parameters/playback\")[/code].\n" +"[codeblocks]\n" +"[gdscript]\n" +"var state_machine = $AnimationTree.get(\"parameters/playback\")\n" +"state_machine.travel(\"some_state\")\n" +"[/gdscript]\n" +"[csharp]\n" +"var stateMachine = GetNode(\"AnimationTree\").Get(\"parameters/" +"playback\").As();\n" +"stateMachine.Travel(\"some_state\");\n" +"[/csharp]\n" +"[/codeblocks]" + msgid "" "Returns the current state length.\n" "[b]Note:[/b] It is possible that any [AnimationRootNode] can be nodes as well " @@ -8836,6 +11905,17 @@ msgstr "" "di macchine a stati complesse, interfacciandosi direttamente con il codice di " "script." +msgid "" +"Determines whether the transition should be disabled, enabled when using " +"[method AnimationNodeStateMachinePlayback.travel], or traversed automatically " +"if the [member advance_condition] and [member advance_expression] checks are " +"[code]true[/code] (if assigned)." +msgstr "" +"Determina se la transizione dovrebbe essere disattivata, abilitata quando si " +"utilizza [method AnimationNodeStateMachinePlayback.travel], o attraversata " +"automaticamente se le verifiche di [member advance_condition] e [member " +"advance_expression] sono pari a [code]true[/code] (se assegnati)." + msgid "" "Lower priority transitions are preferred when travelling through the tree via " "[method AnimationNodeStateMachinePlayback.travel] or [member advance_mode] is " @@ -8855,6 +11935,13 @@ msgstr "" msgid "The transition type." msgstr "Il tipo di transizione." +msgid "" +"Ease curve for better control over cross-fade between this state and the " +"next. Should be a unit [Curve]." +msgstr "" +"Curva di allentamento per un miglior controllo sulla dissolvenza incrociata " +"tra questo stato e quello successivo. Dovrebbe essere una [Curve] unitaria." + msgid "" "The time to cross-fade between this state and the next.\n" "[b]Note:[/b] [AnimationNodeStateMachine] transitions the current state " @@ -8906,10 +11993,18 @@ msgstr "" "Utilizza questa transizione solo durante [method " "AnimationNodeStateMachinePlayback.travel]." +msgid "" +"Automatically use this transition if the [member advance_condition] and " +"[member advance_expression] checks are [code]true[/code] (if assigned)." +msgstr "" +"Utilizza automaticamente questa transizione se le verifiche di [member " +"advance_condition] e [member advance_expression] sono pari a [code]true[/" +"code] (se assegnati)." + msgid "" "Blends two animations subtractively inside of an [AnimationNodeBlendTree]." msgstr "" -"Mescola due animazioni in modo sottrattivo all'interno di un " +"Fonde due animazioni in modo sottrattivo all'interno di un " "[AnimationNodeBlendTree]." msgid "" @@ -8927,8 +12022,8 @@ msgid "" "the inverted animation from the left side, while negative [AnimationNodeAdd2] " "multiplies it from the right side." msgstr "" -"Una risorsa da aggiungere a un [AnimationNodeBlendTree]. Mescola due " -"animazioni in modo sottrattivo in base al valore di quantità.\n" +"Una risorsa da aggiungere a un [AnimationNodeBlendTree]. Fonde due animazioni " +"in modo sottrattivo in base al valore di quantità.\n" "Questo nodo di animazione è solitamente usato per cancellare qualsiasi posa " "aggiuntiva dall'animazione per la sorgente di animazione \"add\" in " "[AnimationNodeAdd2] o [AnimationNodeAdd3].\n" @@ -9271,6 +12366,18 @@ msgstr "Utilizza [member AnimationMixer.root_node] invece." msgid "Returns the node which node path references will travel from." msgstr "Restituisce il nodo da cui i riferimenti di percorso del nodo partono." +msgid "Returns the end time of the section currently being played." +msgstr "Restituisce il tempo di fine della sezione attualmente riprodotta." + +msgid "Returns the start time of the section currently being played." +msgstr "Restituisce il tempo di inizio della sezione attualmente riprodotta." + +msgid "" +"Returns [code]true[/code] if an animation is currently playing with section." +msgstr "" +"Restituisce [code]true[/code] se un'animazione è in riproduzione con la " +"sezione fornita." + msgid "" "Pauses the currently playing animation. The [member " "current_animation_position] will be kept and calling [method play] or [method " @@ -9285,6 +12392,174 @@ msgstr "" "riproduzione corrente.\n" "Vedi anche [method stop]." +msgid "" +"Plays the animation with key [param name]. Custom blend times and speed can " +"be set.\n" +"The [param from_end] option only affects when switching to a new animation " +"track, or if the same track but at the start or end. It does not affect " +"resuming playback that was paused in the middle of an animation. If [param " +"custom_speed] is negative and [param from_end] is [code]true[/code], the " +"animation will play backwards (which is equivalent to calling [method " +"play_backwards]).\n" +"The [AnimationPlayer] keeps track of its current or last played animation " +"with [member assigned_animation]. If this method is called with that same " +"animation [param name], or with no [param name] parameter, the assigned " +"animation will resume playing if it was paused.\n" +"[b]Note:[/b] The animation will be updated the next time the " +"[AnimationPlayer] is processed. If other variables are updated at the same " +"time this is called, they may be updated too early. To perform the update " +"immediately, call [code]advance(0)[/code]." +msgstr "" +"Riproduce l'animazione con la chiave [param name]. È possibile impostare " +"tempi e velocità di fusione personalizzati.\n" +"L'opzione [param from_end] ha effetto solo quando si passa a una nuova " +"traccia di animazione o se è la stessa traccia ma all'inizio o alla fine. Non " +"ha effetto quando si riprende la riproduzione messa in pausa nel mezzo di " +"un'animazione. Se [param custom_speed] è negativo e [param from_end] è " +"[code]true[/code], l'animazione sarà riprodotta all'indietro (il che equivale " +"a chiamare [method play_backwards]).\n" +"[AnimationPlayer] tiene traccia della sua animazione attuale o dell'ultima " +"riprodotta con [member assignment_animation]. Se questo metodo viene chiamato " +"con la stessa animazione con [param name] o senza il parametro [param name], " +"l'animazione assegnata riprenderà la riproduzione se era stata messa in " +"pausa.\n" +"[b]Nota:[/b] L'animazione verrà aggiornata la prossima volta che " +"l'[AnimationPlayer] verrà elaborato. Se altre variabili vengono aggiornate " +"allo stesso tempo che questo metodo viene chiamato, potrebbero essere " +"aggiornate troppo presto. Per eseguire l'aggiornamento immediatamente, chiama " +"[code]advance(0)[/code]." + +msgid "" +"Plays the animation with key [param name] and the section starting from " +"[param start_time] and ending on [param end_time]. See also [method play].\n" +"Setting [param start_time] to a value outside the range of the animation " +"means the start of the animation will be used instead, and setting [param " +"end_time] to a value outside the range of the animation means the end of the " +"animation will be used instead. [param start_time] cannot be equal to [param " +"end_time]." +msgstr "" +"Riproduce l'animazione con la chiave [param name] e la sezione a partire da " +"[param start_time] e che termina a [param end_time]. Vedi anche [method " +"play].\n" +"Impostando [param start_time] su un valore al di fuori dell'intervallo " +"dell'animazione, verrà utilizzato l'inizio dell'animazione, mentre impostando " +"[param end_time] su un valore al di fuori dell'intervallo dell'animazione, " +"verrà utilizzata la fine dell'animazione. [param start_time] non può essere " +"uguale a [param end_time]." + +msgid "" +"Plays the animation with key [param name] and the section starting from " +"[param start_time] and ending on [param end_time] in reverse.\n" +"This method is a shorthand for [method play_section] with [code]custom_speed " +"= -1.0[/code] and [code]from_end = true[/code], see its description for more " +"information." +msgstr "" +"Riproduce l'animazione con la chiave [param name] e la sezione a partire da " +"[param start_time] e che termina a [param end_time] al rovescio.\n" +"Questo metodo è una abbreviazione per [method play_section] con " +"[code]custom_speed = -1.0[/code] e [code]from_end = true[/code], quindi vedi " +"la sua descrizione per ulteriori informazioni." + +msgid "" +"Plays the animation with key [param name] and the section starting from " +"[param start_marker] and ending on [param end_marker].\n" +"If the start marker is empty, the section starts from the beginning of the " +"animation. If the end marker is empty, the section ends on the end of the " +"animation. See also [method play]." +msgstr "" +"Riproduce l'animazione con la chiave [param name] e la sezione che inizia da " +"[param start_marker] e termina su [param end_marker].\n" +"Se il marcatore di inizio è vuoto, la sezione inizia dall'inizio " +"dell'animazione. Se il marcatore di fine è vuoto, la sezione termina alla " +"fine dell'animazione. Vedi anche [method play]." + +msgid "" +"Plays the animation with key [param name] and the section starting from " +"[param start_marker] and ending on [param end_marker] in reverse.\n" +"This method is a shorthand for [method play_section_with_markers] with " +"[code]custom_speed = -1.0[/code] and [code]from_end = true[/code], see its " +"description for more information." +msgstr "" +"Riproduce l'animazione con la chiave [param name] e la sezione a partire da " +"[param start_marker] e che termina a [param end_marker] al rovescio.\n" +"Questo metodo è una abbreviazione per [method play_section_with_markers] con " +"[code]custom_speed = -1.0[/code] e [code]from_end = true[/code], quindi vedi " +"la sua descrizione per ulteriori informazioni." + +msgid "" +"See also [method AnimationMixer.capture].\n" +"You can use this method to use more detailed options for capture than those " +"performed by [member playback_auto_capture]. When [member " +"playback_auto_capture] is [code]false[/code], this method is almost the same " +"as the following:\n" +"[codeblock]\n" +"capture(name, duration, trans_type, ease_type)\n" +"play(name, custom_blend, custom_speed, from_end)\n" +"[/codeblock]\n" +"If [param name] is blank, it specifies [member assigned_animation].\n" +"If [param duration] is a negative value, the duration is set to the interval " +"between the current position and the first key, when [param from_end] is " +"[code]true[/code], uses the interval between the current position and the " +"last key instead.\n" +"[b]Note:[/b] The [param duration] takes [member speed_scale] into account, " +"but [param custom_speed] does not, because the capture cache is interpolated " +"with the blend result and the result may contain multiple animations." +msgstr "" +"Vedi anche [method AnimationMixer.capture].\n" +"È possibile utilizzare questo metodo per fornire opzioni di acquisizione più " +"dettagliate rispetto a quelle eseguite da [member playback_auto_capture]. " +"Quando [member playback_auto_capture] è [code]false[/code], questo metodo è " +"quasi uguale al seguente:\n" +"[codeblock]\n" +"capture(name, duration, trans_type, ease_type)\n" +"play(name, custom_blend, custom_speed, from_end)\n" +"[/code]\n" +"Se [param name] è vuoto, specifica [member assigned_animation].\n" +"Se [param duration] è un valore negativo, la durata è impostata " +"sull'intervallo tra la posizione attuale e la prima chiave, quando [param " +"from_end] è [code]true[/code], utilizza invece l'intervallo tra la posizione " +"attuale e l'ultima chiave.\n" +"[b]Nota:[/b] [param duration] tiene conto di [member speed_scale], ma non di " +"[param velocità_personalizzata_parametro], perché la cache di acquisizione " +"viene interpolata con il risultato della fusione e il risultato potrebbe " +"contenere più animazioni." + +msgid "" +"Queues an animation for playback once the current animation and all " +"previously queued animations are done.\n" +"[b]Note:[/b] If a looped animation is currently playing, the queued animation " +"will never play unless the looped animation is stopped somehow." +msgstr "" +"Mette in coda un'animazione per la riproduzione una volta completata " +"l'animazione attuale e tutte le animazioni precedentemente messe in coda.\n" +"[b]Nota:[/b] Se è in corso la riproduzione di un'animazione in ripetizione, " +"l'animazione in coda non verrà mai riprodotta a meno che l'animazione in " +"ripetizione non venga interrotta in qualche modo." + +msgid "Resets the current section if section is set." +msgstr "Ripristina la sezione attuale se una sezione è impostata." + +msgid "" +"Seeks the animation to the [param seconds] point in time (in seconds). If " +"[param update] is [code]true[/code], the animation updates too, otherwise it " +"updates at process time. Events between the current frame and [param seconds] " +"are skipped.\n" +"If [param update_only] is [code]true[/code], the method / audio / animation " +"playback tracks will not be processed.\n" +"[b]Note:[/b] Seeking to the end of the animation doesn't emit [signal " +"AnimationMixer.animation_finished]. If you want to skip animation and emit " +"the signal, use [method AnimationMixer.advance]." +msgstr "" +"Cerca l'animazione fino al punto [param seconds] nel tempo (in secondi). Se " +"[param update] è [code]true[/code], anche l'animazione viene aggiornata, " +"altrimenti viene aggiornata in fase di processo. Gli eventi compresi tra il " +"frame attuale e [param seconds] vengono saltati.\n" +"Se [param update_only] è [code]true[/code], le tracce di riproduzione di " +"metodo/audio/animazione non verranno elaborate.\n" +"[b]Nota:[/b] Cercare fino alla fine dell'animazione non emette [signal " +"AnimationMixer.animation_finished]. Se si desidera saltare l'animazione ed " +"emettere il segnale, usa [method AnimationMixer.advance]." + msgid "" "Specifies a blend time (in seconds) between two animations, referenced by " "their keys." @@ -9302,6 +12577,29 @@ msgstr "Imposta la notifica di processo in cui aggiornare le animazioni." msgid "Sets the node which node path references will travel from." msgstr "Imposta il nodo da cui i riferimenti di percorso del nodo partono." +msgid "" +"Changes the start and end times of the section being played. The current " +"playback position will be clamped within the new section. See also [method " +"play_section]." +msgstr "" +"Modifica i tempi di inizio e fine della sezione riprodotta. La posizione di " +"riproduzione attuale verrà limitata all'interno della nuova sezione. Vedi " +"anche [method play_section]." + +msgid "" +"Changes the start and end markers of the section being played. The current " +"playback position will be clamped within the new section. See also [method " +"play_section_with_markers].\n" +"If the argument is empty, the section uses the beginning or end of the " +"animation. If both are empty, it means that the section is not set." +msgstr "" +"Modifica i marcatori di inizio e fine della sezione riprodotta. La posizione " +"di riproduzione attuale verrà limitata all'interno della nuova sezione. Vedi " +"anche [method play_section_with_markers].\n" +"Se l'argomento è vuoto, la sezione utilizza l'inizio o la fine " +"dell'animazione. Se entrambi sono vuoti, significa che la sezione non è " +"impostata." + msgid "" "Stops the currently playing animation. The animation position is reset to " "[code]0[/code] and the [code]custom_speed[/code] is reset to [code]1.0[/" @@ -9793,6 +13091,42 @@ msgstr "" "Emesso quando l'area ricevuta [param area] esce da questa area. Richiede che " "[member monitoring] sia impostato a [code]true[/code]." +msgid "" +"Emitted when a [Shape2D] of the received [param area] enters a shape of this " +"area. Requires [member monitoring] to be set to [code]true[/code].\n" +"[param local_shape_index] and [param area_shape_index] contain indices of the " +"interacting shapes from this area and the other area, respectively. [param " +"area_rid] contains the [RID] of the other area. These values can be used with " +"the [PhysicsServer2D].\n" +"[b]Example:[/b] Get the [CollisionShape2D] node from the shape index:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var other_shape_owner = area.shape_find_owner(area_shape_index)\n" +"var other_shape_node = area.shape_owner_get_owner(other_shape_owner)\n" +"\n" +"var local_shape_owner = shape_find_owner(local_shape_index)\n" +"var local_shape_node = shape_owner_get_owner(local_shape_owner)\n" +"[/gdscript]\n" +"[/codeblocks]" +msgstr "" +"Emesso quando un [Shape2D] dell'area ricevuta [param area] entra in una forma " +"di questa area. Richiede che [member monitoring] sia impostato su [code]true[/" +"code].\n" +"[param local_shape_index] e [param area_shape_index] contengono gli indici " +"delle forme di collisione che interagiscono da questa area e dall'altra area, " +"rispettivamente. [param area_rid] contiene il [RID] dell'altra area. Questi " +"valori possono essere utilizzati con il [PhysicsServer2D].\n" +"[b]Esempio:[/b] Ottieni il nodo [CollisionShape2D] dall'indice della forma:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var other_shape_owner = area.shape_find_owner(area_shape_index)\n" +"var other_shape_node = area.shape_owner_get_owner(other_shape_owner)\n" +"\n" +"var local_shape_owner = shape_find_owner(local_shape_index)\n" +"var local_shape_node = shape_owner_get_owner(local_shape_owner)\n" +"[/gdscript]\n" +"[/codeblocks]" + msgid "" "Emitted when a [Shape2D] of the received [param area] exits a shape of this " "area. Requires [member monitoring] to be set to [code]true[/code].\n" @@ -9825,6 +13159,46 @@ msgstr "" "se il loro [TileSet] ha forme di collisione configurate. Richiede che [member " "monitoring] sia impostato a [code]true[/code]." +msgid "" +"Emitted when a [Shape2D] of the received [param body] enters a shape of this " +"area. [param body] can be a [PhysicsBody2D] or a [TileMap]. [TileMap]s are " +"detected if their [TileSet] has collision shapes configured. Requires [member " +"monitoring] to be set to [code]true[/code].\n" +"[param local_shape_index] and [param body_shape_index] contain indices of the " +"interacting shapes from this area and the interacting body, respectively. " +"[param body_rid] contains the [RID] of the body. These values can be used " +"with the [PhysicsServer2D].\n" +"[b]Example:[/b] Get the [CollisionShape2D] node from the shape index:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var body_shape_owner = body.shape_find_owner(body_shape_index)\n" +"var body_shape_node = body.shape_owner_get_owner(body_shape_owner)\n" +"\n" +"var local_shape_owner = shape_find_owner(local_shape_index)\n" +"var local_shape_node = shape_owner_get_owner(local_shape_owner)\n" +"[/gdscript]\n" +"[/codeblocks]" +msgstr "" +"Emesso quando un [Shape2D] del corpo ricevuto [param body] entra in una forma " +"di questa area. [param body] può essere un [PhysicsBody2D] o un [TileMap]. I " +"[TileMap] sono rilevati se il loro [TileSet] ha forme di collisione " +"configurate. Richiede che [member monitoring] sia impostato a [code]true[/" +"code].\n" +"[param local_shape_index] e [param area_shape_index] contengono gli indici " +"delle forme di collisione che interagiscono da questa area e dal corpo, " +"rispettivamente. [param area_rid] contiene il [RID] del corpo. Questi valori " +"possono essere utilizzati con il [PhysicsServer2D].\n" +"[b]Esempio:[/b] Ottieni il nodo [CollisionShape2D] dall'indice della forma:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var body_shape_owner = body.shape_find_owner(body_shape_index)\n" +"var body_shape_node = body.shape_owner_get_owner(body_shape_owner)\n" +"\n" +"var local_shape_owner = shape_find_owner(local_shape_index)\n" +"var local_shape_node = shape_owner_get_owner(local_shape_owner)\n" +"[/gdscript]\n" +"[/codeblocks]" + msgid "" "Emitted when a [Shape2D] of the received [param body] exits a shape of this " "area. [param body] can be a [PhysicsBody2D] or a [TileMap]. [TileMap]s are " @@ -10139,6 +13513,42 @@ msgstr "" "[b]Nota:[/b] Questa forza del vento si applica solo ai nodi [SoftBody3D]. " "Altri corpi di fisica non sono attualmente influenzati dal vento." +msgid "" +"Emitted when a [Shape3D] of the received [param area] enters a shape of this " +"area. Requires [member monitoring] to be set to [code]true[/code].\n" +"[param local_shape_index] and [param area_shape_index] contain indices of the " +"interacting shapes from this area and the other area, respectively. [param " +"area_rid] contains the [RID] of the other area. These values can be used with " +"the [PhysicsServer3D].\n" +"[b]Example:[/b] Get the [CollisionShape3D] node from the shape index:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var other_shape_owner = area.shape_find_owner(area_shape_index)\n" +"var other_shape_node = area.shape_owner_get_owner(other_shape_owner)\n" +"\n" +"var local_shape_owner = shape_find_owner(local_shape_index)\n" +"var local_shape_node = shape_owner_get_owner(local_shape_owner)\n" +"[/gdscript]\n" +"[/codeblocks]" +msgstr "" +"Emesso quando un [Shape3D] dell'area ricevuta [param area] entra in una forma " +"di questa area. Richiede che [member monitoring] sia impostato su [code]true[/" +"code].\n" +"[param local_shape_index] e [param area_shape_index] contengono gli indici " +"delle forme di collisione che interagiscono da questa area e dall'altra area, " +"rispettivamente. [param area_rid] contiene il [RID] dell'altra area. Questi " +"valori possono essere utilizzati con il [PhysicsServer3D].\n" +"[b]Esempio:[/b] Ottieni il nodo [CollisionShape3D] dall'indice della forma:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var other_shape_owner = area.shape_find_owner(area_shape_index)\n" +"var other_shape_node = area.shape_owner_get_owner(other_shape_owner)\n" +"\n" +"var local_shape_owner = shape_find_owner(local_shape_index)\n" +"var local_shape_node = shape_owner_get_owner(local_shape_owner)\n" +"[/gdscript]\n" +"[/codeblocks]" + msgid "" "Emitted when a [Shape3D] of the received [param area] exits a shape of this " "area. Requires [member monitoring] to be set to [code]true[/code].\n" @@ -10171,6 +13581,46 @@ msgstr "" "se il loro [MeshLibrary] ha forme di collisione configurate. Richiede che " "[member monitoring] sia impostato a [code]true[/code]." +msgid "" +"Emitted when a [Shape3D] of the received [param body] enters a shape of this " +"area. [param body] can be a [PhysicsBody3D] or a [GridMap]. [GridMap]s are " +"detected if their [MeshLibrary] has collision shapes configured. Requires " +"[member monitoring] to be set to [code]true[/code].\n" +"[param local_shape_index] and [param body_shape_index] contain indices of the " +"interacting shapes from this area and the interacting body, respectively. " +"[param body_rid] contains the [RID] of the body. These values can be used " +"with the [PhysicsServer3D].\n" +"[b]Example:[/b] Get the [CollisionShape3D] node from the shape index:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var body_shape_owner = body.shape_find_owner(body_shape_index)\n" +"var body_shape_node = body.shape_owner_get_owner(body_shape_owner)\n" +"\n" +"var local_shape_owner = shape_find_owner(local_shape_index)\n" +"var local_shape_node = shape_owner_get_owner(local_shape_owner)\n" +"[/gdscript]\n" +"[/codeblocks]" +msgstr "" +"Emesso quando un [Shape3D] del corpo ricevuto [param body] entra in una forma " +"di questa area. [param body] può essere un [PhysicsBody3D] o un [GridMap]. I " +"[GridMap] sono rilevati se il loro [MeshLibrary] ha forme di collisione " +"configurate. Richiede che [member monitoring] sia impostato a [code]true[/" +"code].\n" +"[param local_shape_index] e [param area_shape_index] contengono gli indici " +"delle forme di collisione che interagiscono da questa area e dal corpo, " +"rispettivamente. [param area_rid] contiene il [RID] del corpo. Questi valori " +"possono essere utilizzati con il [PhysicsServer3D].\n" +"[b]Esempio:[/b] Ottieni il nodo [CollisionShape3D] dall'indice della forma:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var body_shape_owner = body.shape_find_owner(body_shape_index)\n" +"var body_shape_node = body.shape_owner_get_owner(body_shape_owner)\n" +"\n" +"var local_shape_owner = shape_find_owner(local_shape_index)\n" +"var local_shape_node = shape_owner_get_owner(local_shape_owner)\n" +"[/gdscript]\n" +"[/codeblocks]" + msgid "" "Emitted when a [Shape3D] of the received [param body] exits a shape of this " "area. [param body] can be a [PhysicsBody3D] or a [GridMap]. [GridMap]s are " @@ -10188,9 +13638,165 @@ msgstr "" msgid "A built-in data structure that holds a sequence of elements." msgstr "Una struttura di dati integrata che contiene una sequenza di elementi." +msgid "" +"An array data structure that can contain a sequence of elements of any " +"[Variant] type. Elements are accessed by a numerical index starting at " +"[code]0[/code]. Negative indices are used to count from the back ([code]-1[/" +"code] is the last element, [code]-2[/code] is the second to last, etc.).\n" +"[codeblocks]\n" +"[gdscript]\n" +"var array = [\"First\", 2, 3, \"Last\"]\n" +"print(array[0]) # Prints \"First\"\n" +"print(array[2]) # Prints 3\n" +"print(array[-1]) # Prints \"Last\"\n" +"\n" +"array[1] = \"Second\"\n" +"print(array[1]) # Prints \"Second\"\n" +"print(array[-3]) # Prints \"Second\"\n" +"[/gdscript]\n" +"[csharp]\n" +"Godot.Collections.Array array = [\"First\", 2, 3, \"Last\"];\n" +"GD.Print(array[0]); // Prints \"First\"\n" +"GD.Print(array[2]); // Prints 3\n" +"GD.Print(array[^1]); // Prints \"Last\"\n" +"\n" +"array[1] = \"Second\";\n" +"GD.Print(array[1]); // Prints \"Second\"\n" +"GD.Print(array[^3]); // Prints \"Second\"\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] Arrays are always passed by [b]reference[/b]. To get a copy of " +"an array that can be modified independently of the original array, use " +"[method duplicate].\n" +"[b]Note:[/b] Erasing elements while iterating over arrays is [b]not[/b] " +"supported and will result in unpredictable behavior.\n" +"[b]Differences between packed arrays, typed arrays, and untyped arrays:[/b] " +"Packed arrays are generally faster to iterate on and modify compared to a " +"typed array of the same type (e.g. [PackedInt64Array] versus [code]Array[int]" +"[/code]). Also, packed arrays consume less memory. As a downside, packed " +"arrays are less flexible as they don't offer as many convenience methods such " +"as [method Array.map]. Typed arrays are in turn faster to iterate on and " +"modify than untyped arrays." +msgstr "" +"Una struttura dati che può contenere una sequenza di elementi di qualsiasi " +"tipo di [Variant]. Gli elementi sono accessibili da un indice numerico a " +"partire da [code]0[/code]. Gli indici negativi sono utilizzati per contare " +"dalla fine ([code]-1[/code] è l'ultimo elemento, [code]-2[/code] è il " +"penultimo, ecc.).\n" +"[codeblocks]\n" +"[gdscript]\n" +"var array = [\"Primo\", 2, 3, \"Ultimo\"]\n" +"print(array[0]) # Stampa \"Primo\"\n" +"print(array[2]) # Stampa 3\n" +"print(array[-1]) # Stampa \"Ultimo\"\n" +"\n" +"array[1] = \"Secondo\"\n" +"print(array[1]) # Stampa \"Secondo\"\n" +"print(array[-3]) # Stampa \"Secondo\"\n" +"[/gdscript]\n" +"[csharp]\n" +"Godot.Collections.Array array = [\"Primo\", 2, 3, \"Ultimo\"];\n" +"GD.Print(array[0]); // Stampa \"Primo\"\n" +"GD.Print(array[2]); // Stampa 3\n" +"GD.Print(array[^1]);; // Stampa \"Ultimo\"\n" +"\n" +"array[2] = \"Secondo\";\n" +"GD.Print(array[1]); // Stampa \"Secondo\"\n" +"GD.Print(array[^3]); // Stampa \"Secondo\"\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Nota:[/b] Gli array sono sempre passati per [b]riferimento[/b]. Per " +"ottenere una copia di un array che può essere modificato indipendentemente " +"dall'array originale, utilizza [method duplicate].\n" +"[b]Nota:[/b] Rimuovere elementi durante un'iterazione su un array [b]non[/b] " +"è supportato e risulterà in comportamento imprevedibile.\n" +"[b]Differenze tra gli array impacchettati, gli array tipizzati e gli array " +"non tipizzati:[/b] Gli array impacchettati sono generalmente più veloci da " +"iterare e modificare rispetto a un array tipizzato dello stesso tipo (ad " +"esempio [PackedInt64Array] in confronto a [code]Array[int][/code]). Inoltre, " +"gli array impacchettati consumano meno memoria. Come svantaggio, i array " +"impacchettati sono meno flessibili in quanto non offrono molti metodi di " +"convenienza come [method Array.map]. Gli array tipizzati sono anche loro più " +"veloci da iterare e modificare in confronto ad array non tipizzati." + msgid "Constructs an empty [Array]." msgstr "Costruisce un [Array] vuoto." +msgid "" +"Creates a typed array from the [param base] array. A typed array can only " +"contain elements of the given type, or that inherit from the given class, as " +"described by this constructor's parameters:\n" +"- [param type] is the built-in [Variant] type, as one the [enum Variant.Type] " +"constants.\n" +"- [param class_name] is the built-in class name (see [method Object." +"get_class]).\n" +"- [param script] is the associated script. It must be a [Script] instance or " +"[code]null[/code].\n" +"If [param type] is not [constant TYPE_OBJECT], [param class_name] must be an " +"empty [StringName] and [param script] must be [code]null[/code].\n" +"[codeblock]\n" +"class_name Sword\n" +"extends Node\n" +"\n" +"class Stats:\n" +" pass\n" +"\n" +"func _ready():\n" +" var a = Array([], TYPE_INT, \"\", null) # Array[int]\n" +" var b = Array([], TYPE_OBJECT, \"Node\", null) # Array[Node]\n" +" var c = Array([], TYPE_OBJECT, \"Node\", Sword) # Array[Sword]\n" +" var d = Array([], TYPE_OBJECT, \"RefCounted\", Stats) # Array[Stats]\n" +"[/codeblock]\n" +"The [param base] array's elements are converted when necessary. If this is " +"not possible or [param base] is already typed, this constructor fails and " +"returns an empty [Array].\n" +"In GDScript, this constructor is usually not necessary, as it is possible to " +"create a typed array through static typing:\n" +"[codeblock]\n" +"var numbers: Array[float] = []\n" +"var children: Array[Node] = [$Node, $Sprite2D, $RigidBody3D]\n" +"\n" +"var integers: Array[int] = [0.2, 4.5, -2.0]\n" +"print(integers) # Prints [0, 4, -2]\n" +"[/codeblock]" +msgstr "" +"Crea un array tipizzato dall'array [param base]. Un array tipizzato può " +"contenere solo elementi del tipo specificato o che ereditano dalla classe " +"specificata, come descritto dai parametri di questo costruttore:\n" +"- [param type] è il tipo di [Variant] integrato, come una delle costanti di " +"[enum Variant.Type].\n" +"- [param class_name] è il nome della classe integrata (vedi [method Object." +"get_class]).\n" +"- [param script] è lo script associato. Deve essere un'istanza di [Script] o " +"[code]null[/code].\n" +"Se [param type] non è [constant TYPE_OBJECT], [param class_name] deve essere " +"uno [StringName] vuoto e [param script] deve essere [code]null[/code].\n" +"[codeblock]\n" +"class_name Sword\n" +"extends Node\n" +"\n" +"class Stats:\n" +" pass\n" +"\n" +"func _ready():\n" +" var a = Array([], TYPE_INT, \"\", null) # Array[int]\n" +" var b = Array([], TYPE_OBJECT, \"Node\", null) # Array[Node]\n" +" var c = Array([], TYPE_OBJECT, \"Node\", Sword) # Array[Sword]\n" +" var d = Array([], TYPE_OBJECT, \"RefCounted\", Stats) # Array[Stats]\n" +"[/codeblock]\n" +"Gli elementi dell'array [param base] vengono convertiti quando necessario. Se " +"ciò non è possibile o [param base] è già tipizzato, questo costruttore " +"fallisce e restituisce un [Array] vuoto.\n" +"In GDScript, questo costruttore di solito non è necessario, poiché è " +"possibile creare un array tipizzato tramite tipizzazione statica:\n" +"[codeblock]\n" +"var numbers: Array[float] = []\n" +"var children: Array[Node] = [$Node, $Sprite2D, $RigidBody3D]\n" +"\n" +"var integers: Array[int] = [0.2, 4.5, -2.0]\n" +"print(integers) # Prints [0, 4, -2]\n" +"[/codeblock]" + msgid "" "Returns the same array as [param from]. If you need a copy of the array, use " "[method duplicate]." @@ -10228,6 +13834,184 @@ msgstr "Costruisce un array da un [PackedVector3Array]." msgid "Constructs an array from a [PackedVector4Array]." msgstr "Costruisce un [Array] da un [PackedVector4Array]." +msgid "" +"Calls the given [Callable] on each element in the array and returns " +"[code]true[/code] if the [Callable] returns [code]true[/code] for [i]all[/i] " +"elements in the array. If the [Callable] returns [code]false[/code] for one " +"array element or more, this method returns [code]false[/code].\n" +"The [param method] should take one [Variant] parameter (the current array " +"element) and return a [bool].\n" +"[codeblocks]\n" +"[gdscript]\n" +"func greater_than_5(number):\n" +" return number > 5\n" +"\n" +"func _ready():\n" +" print([6, 10, 6].all(greater_than_5)) # Prints true (3/3 elements " +"evaluate to true).\n" +" print([4, 10, 4].all(greater_than_5)) # Prints false (1/3 elements " +"evaluate to true).\n" +" print([4, 4, 4].all(greater_than_5)) # Prints false (0/3 elements " +"evaluate to true).\n" +" print([].all(greater_than_5)) # Prints true (0/0 elements " +"evaluate to true).\n" +"\n" +" # Same as the first line above, but using a lambda function.\n" +" print([6, 10, 6].all(func(element): return element > 5)) # Prints true\n" +"[/gdscript]\n" +"[csharp]\n" +"private static bool GreaterThan5(int number)\n" +"{\n" +" return number > 5;\n" +"}\n" +"\n" +"public override void _Ready()\n" +"{\n" +" // Prints True (3/3 elements evaluate to true).\n" +" GD.Print(new Godot.Collections.Array>int< { 6, 10, 6 }." +"All(GreaterThan5));\n" +" // Prints False (1/3 elements evaluate to true).\n" +" GD.Print(new Godot.Collections.Array>int< { 4, 10, 4 }." +"All(GreaterThan5));\n" +" // Prints False (0/3 elements evaluate to true).\n" +" GD.Print(new Godot.Collections.Array>int< { 4, 4, 4 }." +"All(GreaterThan5));\n" +" // Prints True (0/0 elements evaluate to true).\n" +" GD.Print(new Godot.Collections.Array>int< { }.All(GreaterThan5));\n" +"\n" +" // Same as the first line above, but using a lambda function.\n" +" GD.Print(new Godot.Collections.Array>int< { 6, 10, 6 }.All(element => " +"element > 5)); // Prints True\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"See also [method any], [method filter], [method map] and [method reduce].\n" +"[b]Note:[/b] Unlike relying on the size of an array returned by [method " +"filter], this method will return as early as possible to improve performance " +"(especially with large arrays).\n" +"[b]Note:[/b] For an empty array, this method [url=https://en.wikipedia.org/" +"wiki/Vacuous_truth]always[/url] returns [code]true[/code]." +msgstr "" +"Chiama il [Callable] fornito su ogni elemento nell'array e restituisce " +"[code]true[/code] se il [Callable] restituisce [code]true[/code] per " +"[i]tutti[/i] gli elementi nell'array. Se il [Callable] restituisce " +"[code]false[/code] per uno o più elementi nell'array, questo metodo " +"restituisce [code]true[/code].\n" +"Il [param method] dovrebbe accettare un parametro [Variant] (l'elemento " +"attuale dell'array) e restituire un [bool].\n" +"[codeblocks]\n" +"[gdscript]\n" +"func greater_than_5(number):\n" +" return number > 5\n" +"\n" +"func _ready():\n" +" print([6, 10, 6].all(greater_than_5)) # Stampa true (3/3 elementi sono " +"valutati come true).\n" +" print([4, 10, 4].all(greater_than_5)) # Stampa false (1/3 elementi sono " +"valutati come true).\n" +" print([4, 4, 4].all(greater_than_5)) # Stampa false (0/3 elementi sono " +"valutati come true).\n" +" print([].all(greater_than_5)) # Stampa true (0/0 elementi sono " +"valutati come true).\n" +"\n" +" # Come la prima riga sopra, ma usando una funzione lambda.\n" +" print([6, 10, 6].all(func(element): return element > 5)) # Stampa true\n" +"[/gdscript]\n" +"[csharp]\n" +"private static bool GreaterThan5(int number)\n" +"{\n" +" return number > 5;\n" +"}\n" +"\n" +"public override void _Ready()\n" +"{\n" +" // Stampa True (3/3 elementi sono valutati come true).\n" +" GD.Print(new Godot.Collections.Array>int< { 6, 10, 6 }." +"All(GreaterThan5));\n" +" // Stampa False (1/3 elementi sono valutati come true).\n" +" GD.Print(new Godot.Collections.Array>int< { 4, 10, 4 }." +"All(GreaterThan5));\n" +" // Stampa False (0/3 elementi sono valutati come true).\n" +" GD.Print(new Godot.Collections.Array>int< { 4, 4, 4 }." +"All(GreaterThan5));\n" +" // Stampa True (0/0 elementi sono valutati come true).\n" +" GD.Print(new Godot.Collections.Array>int< { }.All(GreaterThan5));\n" +"\n" +" // Come la prima riga sopra, ma usando una funzione lambda.\n" +" GD.Print(new Godot.Collections.Array>int< { 6, 10, 6 }.All(element => " +"element > 5)); // Stampa True\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"Vedi anche [method all], [method filter], [method map] e [method reduce].\n" +"[b]Nota:[/b] A differenza di basarsi sulla dimensione di un array restituito " +"da [method filter], questo metodo restituirà il prima possibile per " +"migliorare le prestazioni (soprattutto con array di grandi dimensioni).\n" +"[b]Nota:[/b] Per un array vuoto, questo metodo restituisce [url=https://en." +"wikipedia.org/wiki/Vacuous_truth]sempre[/url] [code]true[/code]." + +msgid "" +"Calls the given [Callable] on each element in the array and returns " +"[code]true[/code] if the [Callable] returns [code]true[/code] for [i]one or " +"more[/i] elements in the array. If the [Callable] returns [code]false[/code] " +"for all elements in the array, this method returns [code]false[/code].\n" +"The [param method] should take one [Variant] parameter (the current array " +"element) and return a [bool].\n" +"[codeblock]\n" +"func greater_than_5(number):\n" +" return number > 5\n" +"\n" +"func _ready():\n" +" print([6, 10, 6].any(greater_than_5)) # Prints true (3 elements evaluate " +"to true).\n" +" print([4, 10, 4].any(greater_than_5)) # Prints true (1 elements evaluate " +"to true).\n" +" print([4, 4, 4].any(greater_than_5)) # Prints false (0 elements evaluate " +"to true).\n" +" print([].any(greater_than_5)) # Prints false (0 elements evaluate " +"to true).\n" +"\n" +" # Same as the first line above, but using a lambda function.\n" +" print([6, 10, 6].any(func(number): return number > 5)) # Prints true\n" +"[/codeblock]\n" +"See also [method all], [method filter], [method map] and [method reduce].\n" +"[b]Note:[/b] Unlike relying on the size of an array returned by [method " +"filter], this method will return as early as possible to improve performance " +"(especially with large arrays).\n" +"[b]Note:[/b] For an empty array, this method always returns [code]false[/" +"code]." +msgstr "" +"Chiama il [Callable] fornito su ogni elemento nell'array e restituisce " +"[code]true[/code] se il [Callable] restituisce [code]true[/code] per [i]uno o " +"più[/i] elementi nell'array. Se il [Callable] restituisce [code]false[/code] " +"per tutti gli elementi nell'array, questo metodo restituisce [code]false[/" +"code].\n" +"Il [param method] dovrebbe accettare un parametro [Variant] (l'elemento " +"attuale dell'array) e restituire un [bool].\n" +"[codeblock]\n" +"func greater_than_5(number):\n" +" return number > 5\n" +"\n" +"func _ready():\n" +" print([6, 10, 6].any(greater_than_5)) # Stampa true (3 elementi sono " +"valutati come true).\n" +" print([4, 10, 4].any(greater_than_5)) # Stampa true (1 elements è " +"valutato come to true).\n" +" print([4, 4, 4].any(greater_than_5)) # Stampa false (0 elementi sono " +"valutati come true).\n" +" print([].any(greater_than_5)) # Stampa false (0 elements sono " +"valutati come true).\n" +"\n" +" # Come la prima riga sopra, ma usando una funzione lambda.\n" +" print([6, 10, 6].any(func(number): return number > 5)) # Stampa true\n" +"[/codeblock]\n" +"Vedi anche [method all], [method filter], [method map] e [method reduce].\n" +"[b]Nota:[/b] A differenza di basarsi sulla dimensione di un array restituito " +"da [method filter], questo metodo restituirà il prima possibile per " +"migliorare le prestazioni (soprattutto con array di grandi dimensioni).\n" +"[b]Nota:[/b] Per un array vuoto, questo metodo restituisce sempre " +"[code]false[/code]." + msgid "" "Appends [param value] at the end of the array (alias of [method push_back])." msgstr "" @@ -10400,6 +14184,15 @@ msgstr "" "Rimuove tutti gli elementi dall'array. Questo è equivalente a utilizzare " "[method resize] con una dimensione di [code]0[/code]." +msgid "" +"Returns the number of times an element is in the array.\n" +"To count how many elements in an array satisfy a condition, see [method " +"reduce]." +msgstr "" +"Restituisce il numero di volte in cui un elemento è presente nell'array.\n" +"Per contare quanti elementi in un array soddisfano una condizione, vedi " +"[method reduce]." + msgid "" "Returns a new copy of the array.\n" "By default, a [b]shallow[/b] copy is returned: all nested [Array] and " @@ -10435,6 +14228,49 @@ msgstr "" "[b]Nota:[/b] Rimuovere elementi durante un'iterazione su un array [b]non[/b] " "è supportato e risulterà in comportamento imprevedibile." +msgid "" +"Assigns the given [param value] to all elements in the array.\n" +"This method can often be combined with [method resize] to create an array " +"with a given size and initialized elements:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var array = []\n" +"array.resize(5)\n" +"array.fill(2)\n" +"print(array) # Prints [2, 2, 2, 2, 2]\n" +"[/gdscript]\n" +"[csharp]\n" +"Godot.Collections.Array array = [];\n" +"array.Resize(5);\n" +"array.Fill(2);\n" +"GD.Print(array); // Prints [2, 2, 2, 2, 2]\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] If [param value] is a [Variant] passed by reference ([Object]-" +"derived, [Array], [Dictionary], etc.), the array will be filled with " +"references to the same [param value], which are not duplicates." +msgstr "" +"Assegna il valore [param value] a tutti gli elementi dell'array.\n" +"Questo metodo può spesso essere combinato con [method resize] per creare un " +"array con una certa dimensione ed elementi inizializzati:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var array = []\n" +"array.resize(5)\n" +"array.fill(2)\n" +"print(array) # Stampa [2, 2, 2, 2, 2]\n" +"[/gdscript]\n" +"[csharp]\n" +"Godot.Collections.Array array = [];\n" +"array.Resize(5);\n" +"array.Fill(2);\n" +"GD.Print(array); // Stampa [2, 2, 2, 2, 2]\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Nota:[/b] Se [param value] è un [Variant] passato per riferimento " +"(derivato da [Object], [Array], [Dictionary], ecc.), l'array sarà riempito " +"con riferimenti allo stesso [param value], che non sono duplicati." + msgid "" "Calls the given [Callable] on each element in the array and returns a new, " "filtered [Array].\n" @@ -10492,6 +14328,43 @@ msgstr "" "([enum Variant.Type]) di [param what]. Ad esempio, [code]7[/code] ([int]) e " "[code]7.0[/code] ([float])) non sono considerati uguali per questo metodo." +msgid "" +"Returns the index of the [b]first[/b] element in the array that causes [param " +"method] to return [code]true[/code], or [code]-1[/code] if there are none. " +"The search's start can be specified with [param from], continuing to the end " +"of the array.\n" +"[param method] is a callable that takes an element of the array, and returns " +"a [bool].\n" +"[b]Note:[/b] If you just want to know whether the array contains [i]anything[/" +"i] that satisfies [param method], use [method any].\n" +"[codeblocks]\n" +"[gdscript]\n" +"func is_even(number):\n" +" return number % 2 == 0\n" +"\n" +"func _ready():\n" +" print([1, 3, 4, 7].find_custom(is_even.bind())) # Prints 2\n" +"[/gdscript]\n" +"[/codeblocks]" +msgstr "" +"Restituisce l'indice del [b]primo[/b] elemento nell'array che fa in modo che " +"[param method] restituisca [code]true[/code], o [code]-1[/code] se non ce ne " +"sono. L'inizio della ricerca può essere specificato con [param from], " +"continuando fino alla fine dell'array.\n" +"[param method] è un chiamabile che accetta un elemento dell'array e " +"restituisce un [bool].\n" +"[b]Nota:[/b] Se vuoi solo sapere se l'array contiene [i]qualcosa[/i] che " +"soddisfa [param method], usa [method any].\n" +"[codeblocks]\n" +"[gdscript]\n" +"func is_even(number):\n" +" return number % 2 == 0\n" +"\n" +"func _ready():\n" +" print([1, 3, 4, 7].find_custom(is_even.bind())) # Stampa 2\n" +"[/gdscript]\n" +"[/codeblocks]" + msgid "" "Returns the first element of the array. If the array is empty, fails and " "returns [code]null[/code]. See also [method back].\n" @@ -10503,13 +14376,20 @@ msgstr "" "[b]Nota:[/b] A differenza dell'operatore [code][][/code] ([code]array[0][/" "code]), viene generato un errore senza interrompere l'esecuzione del progetto." +msgid "" +"Returns the element at the given [param index] in the array. This is the same " +"as using the [code][][/code] operator ([code]array[index][/code])." +msgstr "" +"Restituisce l'elemento all'indice [param index] nell'array. È lo stesso che " +"usare l'operatore [code][][/code] ([code]array[index][/code])." + msgid "" "Returns the built-in [Variant] type of the typed array as a [enum Variant." "Type] constant. If the array is not typed, returns [constant TYPE_NIL]. See " "also [method is_typed]." msgstr "" -"Restituisce il tipo di [Variant] incorporato dell'array tipizzato come " -"constante di [enum Variant.Type]. Se l'array non tipizzato, restituisce " +"Restituisce il tipo di [Variant] integrato dell'array tipizzato come " +"constante di [enum Variant.Type]. Se l'array non è tipizzato, restituisce " "[constant TYPE_NIL]. Vedi anche [method is_typed]." msgid "" @@ -10517,8 +14397,8 @@ msgid "" "[Variant] type [constant TYPE_OBJECT]. Otherwise, returns an empty " "[StringName]. See also [method is_typed] and [method Object.get_class]." msgstr "" -"Restituisce il nome della classe [b]incorporata[/b] dell'array tipizzato, se " -"il tipo di [Variant] incorporato è [constant TYPE_OBJECT]. Altrimenti, " +"Restituisce il nome della classe [b]integrata[/b] dell'array tipizzato, se il " +"tipo di [Variant] incorporato è [constant TYPE_OBJECT]. Altrimenti, " "restituisce un [StringName] vuoto. Vedi anche [method is_typed] e [method " "Object.get_class]." @@ -10529,6 +14409,59 @@ msgstr "" "Restituisce l'istanza di [Script] associata a questo array tipizzato, o " "[code]null[/code] se non esiste. Vedi anche [method is_typed]." +msgid "" +"Returns [code]true[/code] if the array contains the given [param value].\n" +"[codeblocks]\n" +"[gdscript]\n" +"print([\"inside\", 7].has(\"inside\")) # Prints true\n" +"print([\"inside\", 7].has(\"outside\")) # Prints false\n" +"print([\"inside\", 7].has(7)) # Prints true\n" +"print([\"inside\", 7].has(\"7\")) # Prints false\n" +"[/gdscript]\n" +"[csharp]\n" +"Godot.Collections.Array arr = [\"inside\", 7];\n" +"// By C# convention, this method is renamed to `Contains`.\n" +"GD.Print(arr.Contains(\"inside\")); // Prints True\n" +"GD.Print(arr.Contains(\"outside\")); // Prints False\n" +"GD.Print(arr.Contains(7)); // Prints True\n" +"GD.Print(arr.Contains(\"7\")); // Prints False\n" +"[/csharp]\n" +"[/codeblocks]\n" +"In GDScript, this is equivalent to the [code]in[/code] operator:\n" +"[codeblock]\n" +"if 4 in [2, 4, 6, 8]:\n" +" print(\"4 is here!\") # Will be printed.\n" +"[/codeblock]\n" +"[b]Note:[/b] For performance reasons, the search is affected by the [param " +"value]'s [enum Variant.Type]. For example, [code]7[/code] ([int]) and " +"[code]7.0[/code] ([float]) are not considered equal for this method." +msgstr "" +"Restituisce [code]true[/code] se l'array contiene il valore [param value].\n" +"[codeblocks]\n" +"[gdscript]\n" +"print([\"inside\", 7].has(\"dentro\")) # Stampa true\n" +"print([\"inside\", 7].has(\"fuori\")) # Stampa false\n" +"print([\"inside\", 7].has(7)) # Stampa true\n" +"print([\"inside\", 7].has(\"7\")) # Stampa false\n" +"[/gdscript]\n" +"[csharp]\n" +"Godot.Collections.Array arr = [\"dentro\", 7];\n" +"// By C# convention, this method is renamed to `Contains`.\n" +"GD.Print(arr.Contains(\"dentro\")); // Stampa True\n" +"GD.Print(arr.Contains(\"fuori\")); // Stampa False\n" +"GD.Print(arr.Contains(7)); // Stampa True\n" +"GD.Print(arr.Contains(\"7\")); // Stampa False\n" +"[/csharp]\n" +"[/codeblocks]\n" +"In GDScript, questo metodo equivale all'operatore [code]in[/code]:\n" +"[codeblock]\n" +"if 4 in [2, 4, 6, 8]:\n" +" print(\"4 è qui!\") # Sarà stampato.\n" +"[/codeblock]\n" +"[b]Nota:[/b] Per motivi di prestazioni, la ricerca è influenzata dal tipo " +"([enum Variant.Type]) di [param value]. Ad esempio, [code]7[/code] ([int]) e " +"[code]7.0[/code] ([float])) non sono considerati uguali per questo metodo." + msgid "" "Returns a hashed 32-bit integer value representing the array and its " "contents.\n" @@ -10674,6 +14607,41 @@ msgstr "" "possono essere confrontati. Altrimenti, restituisce [code]null[/code]. Vedi " "anche [method max]." +msgid "" +"Returns a random element from the array. Generates an error and returns " +"[code]null[/code] if the array is empty.\n" +"[codeblocks]\n" +"[gdscript]\n" +"# May print 1, 2, 3.25, or \"Hi\".\n" +"print([1, 2, 3.25, \"Hi\"].pick_random())\n" +"[/gdscript]\n" +"[csharp]\n" +"Godot.Collections.Array array = [1, 2, 3.25f, \"Hi\"];\n" +"GD.Print(array.PickRandom()); // May print 1, 2, 3.25, or \"Hi\".\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] Like many similar functions in the engine (such as [method " +"@GlobalScope.randi] or [method shuffle]), this method uses a common, global " +"random seed. To get a predictable outcome from this method, see [method " +"@GlobalScope.seed]." +msgstr "" +"Restituisce un elemento a caso dall'array. Genera un errore e restituisce " +"[code]null[/code] se l'array è vuoto.\n" +"[codeblocks]\n" +"[gdscript]\n" +"# Potrebbe stampare 1, 2, 3.25, o \"Ciao\".\n" +"print([1, 2, 3.25, \"Ciao\"].pick_random())\n" +"[/gdscript]\n" +"[csharp]\n" +"Godot.Collections.Array array = [1, 2, 3.25f, \"Ciao\"];\n" +"GD.Print(array.PickRandom()); // Potrebbe stampare 1, 2, 3.25, o \"Ciao\".\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Nota:[/b] Come molte funzioni simili nel motore (come ad esempio [method " +"@GlobalScope.randi] o [method shuffle]), questo metodo utilizza un seed " +"casuale, comune e globale. Per ottenere un risultato prevedibile da questo " +"metodo, vedi [method @GlobalScope.seed]." + msgid "" "Removes and returns the element of the array at index [param position]. If " "negative, [param position] is considered relative to the end of the array. " @@ -10729,6 +14697,100 @@ msgstr "" "il che può avere un notevole costo sulle prestazioni, soprattutto su array " "più grandi." +msgid "" +"Calls the given [Callable] for each element in array, accumulates the result " +"in [param accum], then returns it.\n" +"The [param method] takes two arguments: the current value of [param accum] " +"and the current array element. If [param accum] is [code]null[/code] (as by " +"default), the iteration will start from the second element, with the first " +"one used as initial value of [param accum].\n" +"[codeblock]\n" +"func sum(accum, number):\n" +" return accum + number\n" +"\n" +"func _ready():\n" +" print([1, 2, 3].reduce(sum, 0)) # Prints 6\n" +" print([1, 2, 3].reduce(sum, 10)) # Prints 16\n" +"\n" +" # Same as above, but using a lambda function.\n" +" print([1, 2, 3].reduce(func(accum, number): return accum + number, 10))\n" +"[/codeblock]\n" +"If [method max] is not desirable, this method may also be used to implement a " +"custom comparator:\n" +"[codeblock]\n" +"func _ready():\n" +" var arr = [Vector2i(5, 0), Vector2i(3, 4), Vector2i(1, 2)]\n" +"\n" +" var longest_vec = arr.reduce(func(max, vec): return vec if " +"is_length_greater(vec, max) else max)\n" +" print(longest_vec) # Prints (3, 4)\n" +"\n" +"func is_length_greater(a, b):\n" +" return a.length() > b.length()\n" +"[/codeblock]\n" +"This method can also be used to count how many elements in an array satisfy a " +"certain condition, similar to [method count]:\n" +"[codeblock]\n" +"func is_even(number):\n" +" return number % 2 == 0\n" +"\n" +"func _ready():\n" +" var arr = [1, 2, 3, 4, 5]\n" +" # If the current element is even, increment count, otherwise leave count " +"the same.\n" +" var even_count = arr.reduce(func(count, next): return count + 1 if " +"is_even(next) else count, 0)\n" +" print(even_count) # Prints 2\n" +"[/codeblock]\n" +"See also [method map], [method filter], [method any], and [method all]." +msgstr "" +"Chiama il [Callable] fornito per ogni elemento nell'array, accumula il " +"risultato in [param accum], quindi lo restituisce.\n" +"Il [param method] prende due argomenti: il valore attuale di [param accum] e " +"l'elemento attuale dell'array. Se [param accum] è [code]null[/code] (come per " +"impostazione predefinita), l'iterazione inizierà dal secondo elemento, con il " +"primo utilizzato come valore iniziale di [param accum].\n" +"[codeblock]\n" +"func somma(accum, numero):\n" +" return accum + numero\n" +"\n" +"func _ready():\n" +" print([1, 2, 3].reduce(somma, 0)) # Stampa 6\n" +" print([1, 2, 3].reduce(somma, 10)) # Stampa 16\n" +"\n" +" # Stesso di sopra, ma usando una funzione lambda.\n" +" print([1, 2, 3].reduce(func(accum, numero): return accum + numero, 10))\n" +"[/codeblock]\n" +"Se [method max] non è desiderato, questo metodo può anche essere utilizzato " +"per implementare un comparatore personalizzato:\n" +"[codeblock]\n" +"func _ready():\n" +" var arr = [Vector2(5, 0), Vector2(3, 4), Vector2(1, 2)]\n" +"\n" +" var longest_vec = arr.reduce(func(max, vec): return vec if " +"is_length_greater(vec, max) else max)\n" +" print(longest_vec) # Stampa Vector2(3, 4).\n" +"\n" +"func is_length_greater(a, b):\n" +" return a.length() > b.length()\n" +"[/codeblock]\n" +"Questo metodo può essere utilizzato anche per contare quanti elementi in un " +"array soddisfano una determinata condizione, in modo simile al metodo [method " +"count]:\n" +"[codeblock]\n" +"func is_even(number):\n" +" return number % 2 == 0\n" +"\n" +"func _ready():\n" +" var arr = [1, 2, 3, 4, 5]\n" +" # Se l'elemento attuale è pari, incrementa il conteggio, altrimenti " +"lascialo invariato.\n" +" var even_count = arr.reduce(func(count, next): return count + 1 if " +"is_even(next) else count, 0)\n" +" print(even_count) # Stampa 2\n" +"[/codeblock]\n" +"Vedi anche [method map], [method filter], [method any] e [method all]." + msgid "" "Removes the element from the array at the given index ([param position]). If " "the index is out of bounds, this method fails.\n" @@ -10787,6 +14849,29 @@ msgstr "" "essere specificato con [param from], la quale continua fino all'inizio " "dell'array. Questo metodo è l'inverso di [method find]." +msgid "" +"Returns the index of the [b]last[/b] element of the array that causes [param " +"method] to return [code]true[/code], or [code]-1[/code] if there are none. " +"The search's start can be specified with [param from], continuing to the " +"beginning of the array. This method is the reverse of [method find_custom]." +msgstr "" +"Restituisce l'indice dell'[b]ultima[/b] occorrenza nell'array che provoca " +"[param method] a ritornare [code]true[/code], o [code]-1[/code] se non ne " +"esistono. L'inizio della ricerca può essere specificato con [param from], la " +"quale continua fino all'inizio dell'array. Questo metodo è l'inverso di " +"[method find_custom]." + +msgid "" +"Sets the value of the element at the given [param index] to the given [param " +"value]. This will not change the size of the array, it only changes the value " +"at an index already in the array. This is the same as using the [code][][/" +"code] operator ([code]array[index] = value[/code])." +msgstr "" +"Imposta il valore dell'elemento all'indice [param index] sul valore [param " +"value]. Ciò non modificherà la dimensione dell'array, ma modificherà solo il " +"valore in un indice già presente nell'array. Questo equivale a usare " +"l'operatore [code][][/code] ([code]array[index] = value[/code])." + msgid "" "Shuffles all elements of the array in a random order.\n" "[b]Note:[/b] Like many similar functions in the engine (such as [method " @@ -10851,6 +14936,47 @@ msgstr "" "print(lettere.slice(4, 1, -1)) # Stampa [\"E\", \"D\", \"C\"]\n" "[/codeblock]" +msgid "" +"Sorts the array in ascending order. The final order is dependent on the " +"\"less than\" ([code]<[/code]) comparison between elements.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var numbers = [10, 5, 2.5, 8]\n" +"numbers.sort()\n" +"print(numbers) # Prints [2.5, 5, 8, 10]\n" +"[/gdscript]\n" +"[csharp]\n" +"Godot.Collections.Array numbers = [10, 5, 2.5, 8];\n" +"numbers.Sort();\n" +"GD.Print(numbers); // Prints [2.5, 5, 8, 10]\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] The sorting algorithm used is not [url=https://en.wikipedia.org/" +"wiki/Sorting_algorithm#Stability]stable[/url]. This means that equivalent " +"elements (such as [code]2[/code] and [code]2.0[/code]) may have their order " +"changed when calling [method sort]." +msgstr "" +"Ordina l'array in ordine crescente. L'ordine finale dipende dal confronto " +"\"minore di\" ([code]<[/code]) tra gli elementi.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var numeri = [10, 5, 2.5, 8]\n" +"numeri.sort()\n" +"print(numeri) # Stampa [2.5, 5, 8, 10]\n" +"[/gdscript]\n" +"[csharp]\n" +"Godot.Collections.Array numbers = [10, 5, 2.5, 8];\n" +"numeri.Sort();\n" +"GD.Print(numeri); // Stampa [2.5, 5, 8, 10]\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Nota:[/b] L'algoritmo di selezione utilizzato non è [url=https://it." +"wikipedia.org/wiki/" +"Algoritmo_di_ordinamento#Stabilit%C3%A0_di_un_algoritmo]stabile[/url]. Ciò " +"significa che gli elementi equivalenti (come [code]2[/code] e [code]2.0[/" +"code]) potrebbero avere il loro ordine cambiato quando viene chiamato [method " +"sort]." + msgid "" "Sorts the array using a custom [Callable].\n" "[param func] is called as many times as necessary, receiving two array " @@ -10939,6 +15065,45 @@ msgstr "" "Restituisce [code]true[/code] se la dimensione dell'array o i suoi elementi " "sono diversi da quelli di [param right]." +msgid "" +"Appends the [param right] array to the left operand, creating a new [Array]. " +"This is also known as an array concatenation.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var array1 = [\"One\", 2]\n" +"var array2 = [3, \"Four\"]\n" +"print(array1 + array2) # Prints [\"One\", 2, 3, \"Four\"]\n" +"[/gdscript]\n" +"[csharp]\n" +"// Note that concatenation is not possible with C#'s native Array type.\n" +"Godot.Collections.Array array1 = [\"One\", 2];\n" +"Godot.Collections.Array array2 = [3, \"Four\"];\n" +"GD.Print(array1 + array2); // Prints [\"One\", 2, 3, \"Four\"]\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] For existing arrays, [method append_array] is much more " +"efficient than concatenation and assignment with the [code]+=[/code] operator." +msgstr "" +"Appende l'array [param right] all'operando sinistro, creando un nuovo " +"[Array]. Questa è anche conosciuta come una concatenazione di array.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var array1 = [\"Uno\", 2]\n" +"var array2 = [3, \"Quattro\"]\n" +"print(array1 + array2) # Stampa [\"Uno\", 2, 3, \"Quattro\"]\n" +"[/gdscript]\n" +"[csharp]\n" +"// Si noti che la concatenazione non è possibile con il tipo Array nativo di " +"C#.\n" +"Godot.Collections.Array array1 = [\"Uno\", 2];\n" +"Godot.Collections.Array array2 = [3, \"Quattro\"];\n" +"GD.Print(array1 + array2); // Stampa [\"Uno\", 2, 3, \"Quattro\"]\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Nota:[/b] Per gli array esistenti, [method append_array] è molto più " +"efficiente della concatenazione e dell'assegnazione con l'operatore [code]+=[/" +"code]." + msgid "" "Compares the elements of both arrays in order, starting from index [code]0[/" "code] and ending on the last index in common between both arrays. For each " @@ -11047,6 +15212,104 @@ msgstr "" "Un tipo di [Mesh] che fornisce utilità per la costruzione di una superficie " "da più array." +msgid "" +"The [ArrayMesh] is used to construct a [Mesh] by specifying the attributes as " +"arrays.\n" +"The most basic example is the creation of a single triangle:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var vertices = PackedVector3Array()\n" +"vertices.push_back(Vector3(0, 1, 0))\n" +"vertices.push_back(Vector3(1, 0, 0))\n" +"vertices.push_back(Vector3(0, 0, 1))\n" +"\n" +"# Initialize the ArrayMesh.\n" +"var arr_mesh = ArrayMesh.new()\n" +"var arrays = []\n" +"arrays.resize(Mesh.ARRAY_MAX)\n" +"arrays[Mesh.ARRAY_VERTEX] = vertices\n" +"\n" +"# Create the Mesh.\n" +"arr_mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, arrays)\n" +"var m = MeshInstance3D.new()\n" +"m.mesh = arr_mesh\n" +"[/gdscript]\n" +"[csharp]\n" +"Vector3[] vertices =\n" +"[\n" +" new Vector3(0, 1, 0),\n" +" new Vector3(1, 0, 0),\n" +" new Vector3(0, 0, 1),\n" +"];\n" +"\n" +"// Initialize the ArrayMesh.\n" +"var arrMesh = new ArrayMesh();\n" +"Godot.Collections.Array arrays = [];\n" +"arrays.Resize((int)Mesh.ArrayType.Max);\n" +"arrays[(int)Mesh.ArrayType.Vertex] = vertices;\n" +"\n" +"// Create the Mesh.\n" +"arrMesh.AddSurfaceFromArrays(Mesh.PrimitiveType.Triangles, arrays);\n" +"var m = new MeshInstance3D();\n" +"m.Mesh = arrMesh;\n" +"[/csharp]\n" +"[/codeblocks]\n" +"The [MeshInstance3D] is ready to be added to the [SceneTree] to be shown.\n" +"See also [ImmediateMesh], [MeshDataTool] and [SurfaceTool] for procedural " +"geometry generation.\n" +"[b]Note:[/b] Godot uses clockwise [url=https://learnopengl.com/Advanced-" +"OpenGL/Face-culling]winding order[/url] for front faces of triangle primitive " +"modes." +msgstr "" +"Un [ArrayMesh] viene utilizzato per costruire una [Mesh] specificando gli " +"attributi come più array.\n" +"L'esempio più basilare è la creazione di un unico triangolo:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var vertices = PackedVector3Array()\n" +"vertices.push_back(Vector3(0, 1, 0))\n" +"vertices.push_back(Vector3(1, 0, 0))\n" +"vertices.push_back(Vector3(0, 0, 1))\n" +"\n" +"# Inizializza l'ArrayMesh.\n" +"var arr_mesh = ArrayMesh.new()\n" +"var arrays = []\n" +"arrays.resize(Mesh.ARRAY_MAX)\n" +"arrays[Mesh.ARRAY_VERTEX] = vertices\n" +"\n" +"# Crea la Mesh.\n" +"arr_mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, arrays)\n" +"var m = MeshInstance3D.new()\n" +"m.mesh = arr_mesh\n" +"[/gdscript]\n" +"[csharp]\n" +"var vertices = new Vector3[]\n" +"{\n" +" new Vector3(0, 1, 0),\n" +" new Vector3(1, 0, 0),\n" +" new Vector3(0, 0, 1),\n" +"};\n" +"\n" +"// Inizializza l'ArrayMesh.\n" +"var arrMesh = new ArrayMesh();\n" +"Godot.Collections.Array arrays = [];\n" +"arrays.Resize((int)Mesh.ArrayType.Max);\n" +"arrays[(int)Mesh.ArrayType.Vertex] = vertices;\n" +"\n" +"// Crea la Mesh.\n" +"arrMesh.AddSurfaceFromArrays(Mesh.PrimitiveType.Triangles, arrays);\n" +"var m = new MeshInstance3D();\n" +"m.Mesh = arrMesh;\n" +"[/csharp]\n" +"[/codeblocks]\n" +"Il [MeshInstance3D] è pronto per essere aggiunto al [SceneTree] per essere " +"mostrato.\n" +"Vedi anche [ImmediateMesh], [MeshDataTool], e [SurfaceTool] per la " +"generazione di geometria procedurale.\n" +"[b]Nota:[/b] Godot utilizza l'[url=https://learnopengl.com/Advanced-OpenGL/" +"Face-culling]ordine di avvolgimento[/url] in senso orario per le facce " +"anteriori delle modalità di triangolo primitivo." + msgid "Procedural geometry using the ArrayMesh" msgstr "Geometria procedurale utilizzando ArrayMesh" @@ -11082,6 +15345,34 @@ msgstr "Rigenera le tangenti per ciascuna delle superfici di [ArrayMesh]." msgid "Sets the name of the blend shape at this index." msgstr "Imposta il nome della forma di fusione in questo indice." +msgid "" +"Returns the index of the first surface with this name held within this " +"[ArrayMesh]. If none are found, -1 is returned." +msgstr "" +"Restituisce l'indice della prima superficie con questo nome contenuta in " +"questo [ArrayMesh]. Se non viene trovato, viene restituito -1." + +msgid "" +"Returns the length in indices of the index array in the requested surface " +"(see [method add_surface_from_arrays])." +msgstr "" +"Restituisce la lunghezza in indici dell'array di indici nella superficie " +"richiesta (vedi [method add_surface_from_arrays])." + +msgid "" +"Returns the length in vertices of the vertex array in the requested surface " +"(see [method add_surface_from_arrays])." +msgstr "" +"Restituisce la lunghezza in vertici dell'array di vertici nella superficie " +"richiesta (vedi [method add_surface_from_arrays])." + +msgid "" +"Returns the format mask of the requested surface (see [method " +"add_surface_from_arrays])." +msgstr "" +"Restituisce la maschera di formato della superficie richiesta (vedi [method " +"add_surface_from_arrays])." + msgid "Gets the name assigned to this surface." msgstr "Ottiene il nome assegnato a questa superficie." @@ -11092,6 +15383,13 @@ msgstr "" "Restituisce il tipo primitivo della superficie richiesta (vedi [method " "add_surface_from_arrays])." +msgid "" +"Removes the surface at the given index from the Mesh, shifting surfaces with " +"higher index down by one." +msgstr "" +"Rimuove la superficie con l'indice specificato dalla mesh, spostando le " +"superfici con gli indici maggiori verso il basso di uno." + msgid "Sets a name for a given surface." msgstr "Imposta un nome per una determinata superficie." @@ -11146,6 +15444,39 @@ msgstr "" msgid "Occlusion culling" msgstr "Occlusion culling" +msgid "" +"Sets [member indices] and [member vertices], while updating the final " +"occluder only once after both values are set." +msgstr "" +"Imposta [member indices] e [member vertices], aggiornando l'occlusore " +"risultante solo una volta dopo che entrambi i valori sono stati impostati." + +msgid "" +"The occluder's index position. Indices determine which points from the " +"[member vertices] array should be drawn, and in which order.\n" +"[b]Note:[/b] The occluder is always updated after setting this value. If " +"creating occluders procedurally, consider using [method set_arrays] instead " +"to avoid updating the occluder twice when it's created." +msgstr "" +"Posizione d'indice dell'occlusore. Gli indici determinano quali punti " +"dell'array [member vertices] devono essere disegnati e in quale ordine.\n" +"[b]Nota:[/b] L'occlusore viene sempre aggiornato dopo aver impostato questo " +"valore. Se si creano occlusori in modo procedurale, si consiglia di " +"utilizzare [method set_arrays] per evitare di aggiornare l'occlusore due " +"volte quando viene creato." + +msgid "" +"The occluder's vertex positions in local 3D coordinates.\n" +"[b]Note:[/b] The occluder is always updated after setting this value. If " +"creating occluders procedurally, consider using [method set_arrays] instead " +"to avoid updating the occluder twice when it's created." +msgstr "" +"Posizioni dei vertici dell'occlusore in coordinate 3D locali.\n" +"[b]Nota:[/b] L'occlusore viene sempre aggiornato dopo aver impostato questo " +"valore. Se si creano occlusori in modo procedurale, si consiglia di " +"utilizzare [method set_arrays] per evitare di aggiornare l'occlusore due " +"volte quando viene creato." + msgid "A container that preserves the proportions of its child controls." msgstr "Un contenitore che conserva le proporzioni dei suoi controlli figlio." @@ -11312,7 +15643,7 @@ msgid "" "[param bidirectional] is [code]false[/code], returns whether movement from " "[param id] to [param to_id] is possible through this segment." msgstr "" -"Restituisce se c'è una connessione/segmento tra i punti specificati. Se " +"Restituisce se c'è un collegamento/segmento tra i punti specificati. Se " "[param bidirectional] è [code]false[/code], restituisce se è possibile il " "movimento da [param id] a [param to_id] attraverso questo segmento." @@ -11430,6 +15761,90 @@ msgstr "" "Il risultato è nel segmento che va da [code]y = 0[/code] a [code]y = 5[/" "code]. È la posizione più vicina nel segmento al punto indicato." +msgid "" +"Returns an array with the IDs of the points that form the path found by " +"AStar2D between the given points. The array is ordered from the starting " +"point to the ending point of the path.\n" +"If there is no valid path to the target, and [param allow_partial_path] is " +"[code]true[/code], returns a path to the point closest to the target that can " +"be reached.\n" +"[b]Note:[/b] When [param allow_partial_path] is [code]true[/code] and [param " +"to_id] is disabled the search may take an unusually long time to finish.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar2D.new()\n" +"astar.add_point(1, Vector2(0, 0))\n" +"astar.add_point(2, Vector2(0, 1), 1) # Default weight is 1\n" +"astar.add_point(3, Vector2(1, 1))\n" +"astar.add_point(4, Vector2(2, 0))\n" +"\n" +"astar.connect_points(1, 2, false)\n" +"astar.connect_points(2, 3, false)\n" +"astar.connect_points(4, 3, false)\n" +"astar.connect_points(1, 4, false)\n" +"\n" +"var res = astar.get_id_path(1, 3) # Returns [1, 2, 3]\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar2D();\n" +"astar.AddPoint(1, new Vector2(0, 0));\n" +"astar.AddPoint(2, new Vector2(0, 1), 1); // Default weight is 1\n" +"astar.AddPoint(3, new Vector2(1, 1));\n" +"astar.AddPoint(4, new Vector2(2, 0));\n" +"\n" +"astar.ConnectPoints(1, 2, false);\n" +"astar.ConnectPoints(2, 3, false);\n" +"astar.ConnectPoints(4, 3, false);\n" +"astar.ConnectPoints(1, 4, false);\n" +"long[] res = astar.GetIdPath(1, 3); // Returns [1, 2, 3]\n" +"[/csharp]\n" +"[/codeblocks]\n" +"If you change the 2nd point's weight to 3, then the result will be [code][1, " +"4, 3][/code] instead, because now even though the distance is longer, it's " +"\"easier\" to get through point 4 than through point 2." +msgstr "" +"Restituisce un array con gli ID dei punti che formano il percorso trovato da " +"AStar2D tra i punti indicati. L'array è ordinato dal punto iniziale al punto " +"finale del percorso.\n" +"Se non c'è un percorso valido per la destinazione, e [param " +"allow_partial_path] è [code]true[/code], restituisce un percorso al punto più " +"vicino alla destinazione che può essere raggiunto.\n" +"[b]Nota:[/b] Quando [param allow_partial_path] è [code]true[/code] e [param " +"to_id] è disabilitato, la ricerca potrebbe richiedere un tempo insolitamente " +"lungo per essere completata.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar2D.new()\n" +"astar.add_point(1, Vector2(0, 0))\n" +"astar.add_point(2, Vector2(0, 1), 1) # Il peso predefinito è 1\n" +"astar.add_point(3, Vector2(1, 1))\n" +"astar.add_point(4, Vector2(2, 0))\n" +"\n" +"astar.connect_points(1, 2, false)\n" +"astar.connect_points(2, 3, false)\n" +"astar.connect_points(4, 3, false)\n" +"astar.connect_points(1, 4, false)\n" +"\n" +"var res = astar.get_id_path(1, 3) # Restituisce [1, 2, 3]\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar2D();\n" +"astar.AddPoint(1, new Vector2(0, 0));\n" +"astar.AddPoint(2, new Vector2(0, 1), 1); // Il peso predefinito è 1\n" +"astar.AddPoint(3, new Vector2(1, 1));\n" +"astar.AddPoint(4, new Vector2(2, 0));\n" +"\n" +"astar.ConnectPoints(1, 2, false);\n" +"astar.ConnectPoints(2, 3, false);\n" +"astar.ConnectPoints(4, 3, false);\n" +"astar.ConnectPoints(1, 4, false);\n" +"long[] res = astar.GetIdPath(1, 3); // Restituisce [1, 2, 3]\n" +"[/csharp]\n" +"[/codeblocks]\n" +"Se si cambia il peso a 3 per il punto 2, allora il risultato sarà [code][1, " +"4, 3][/code] invece, poiché adesso anche se la distanza è più lunga, è \"più " +"facile\" arrivare attraverso il punto 4 che attraverso il punto 2." + msgid "" "Returns the capacity of the structure backing the points, useful in " "conjunction with [method reserve_space]." @@ -11437,12 +15852,95 @@ msgstr "" "Restituisce la capacità della struttura che sostiene i punti, utile in " "combinazione con [method reserve_space]." +msgid "" +"Returns an array with the IDs of the points that form the connection with the " +"given point.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar2D.new()\n" +"astar.add_point(1, Vector2(0, 0))\n" +"astar.add_point(2, Vector2(0, 1))\n" +"astar.add_point(3, Vector2(1, 1))\n" +"astar.add_point(4, Vector2(2, 0))\n" +"\n" +"astar.connect_points(1, 2, true)\n" +"astar.connect_points(1, 3, true)\n" +"\n" +"var neighbors = astar.get_point_connections(1) # Returns [2, 3]\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar2D();\n" +"astar.AddPoint(1, new Vector2(0, 0));\n" +"astar.AddPoint(2, new Vector2(0, 1));\n" +"astar.AddPoint(3, new Vector2(1, 1));\n" +"astar.AddPoint(4, new Vector2(2, 0));\n" +"\n" +"astar.ConnectPoints(1, 2, true);\n" +"astar.ConnectPoints(1, 3, true);\n" +"\n" +"long[] neighbors = astar.GetPointConnections(1); // Returns [2, 3]\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"Restituisce un array con gli ID dei punti che formano il collegamento con il " +"punto indicato.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar2D.new()\n" +"astar.add_point(1, Vector2(0, 0))\n" +"astar.add_point(2, Vector2(0, 1))\n" +"astar.add_point(3, Vector2(1, 1))\n" +"astar.add_point(4, Vector2(2, 0))\n" +"\n" +"astar.connect_points(1, 2, true)\n" +"astar.connect_points(1, 3, true)\n" +"\n" +"var neighbors = astar.get_point_connections(1) # Restituisce [2, 3]\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar2D();\n" +"astar.AddPoint(1, new Vector2(0, 0));\n" +"astar.AddPoint(2, new Vector2(0, 1));\n" +"astar.AddPoint(3, new Vector2(1, 1));\n" +"astar.AddPoint(4, new Vector2(2, 0));\n" +"\n" +"astar.ConnectPoints(1, 2, true);\n" +"astar.ConnectPoints(1, 3, true);\n" +"\n" +"long[] neighbors = astar.GetPointConnections(1); // Restituisce [2, 3]\n" +"[/csharp]\n" +"[/codeblocks]" + msgid "Returns the number of points currently in the points pool." msgstr "Restituisce il numero di punti attualmente nell'insieme dei punti." msgid "Returns an array of all point IDs." msgstr "Restituisce un array di tutti gli ID dei punti." +msgid "" +"Returns an array with the points that are in the path found by AStar2D " +"between the given points. The array is ordered from the starting point to the " +"ending point of the path.\n" +"If there is no valid path to the target, and [param allow_partial_path] is " +"[code]true[/code], returns a path to the point closest to the target that can " +"be reached.\n" +"[b]Note:[/b] This method is not thread-safe. If called from a [Thread], it " +"will return an empty array and will print an error message.\n" +"Additionally, when [param allow_partial_path] is [code]true[/code] and [param " +"to_id] is disabled the search may take an unusually long time to finish." +msgstr "" +"Restituisce un array con i punti che sono presenti nel percorso trovato da " +"AStar2D tra i punti indicati. L'array è ordinato dal punto iniziale al punto " +"finale del percorso.\n" +"Se non c'è un percorso valido per la destinazione, e [param " +"allow_partial_path] è [code]true[/code], restituisce un percorso al punto più " +"vicino alla destinazione che può essere raggiunto.\n" +"[b]Nota:[/b] Questo metodo non è thread-safe. Se chiamato da un [Thread], " +"restituirà un array vuoto e stamperà un messaggio di errore.\n" +"Inoltre, quando [param allow_partial_path] è [code]true[/code] e [param " +"to_id] è disabilitato, la ricerca potrebbe richiedere un tempo insolitamente " +"lungo per essere completata." + msgid "Returns the position of the point associated with the given [param id]." msgstr "Restituisce la posizione del punto associato all'[param id] fornito." @@ -11466,6 +15964,16 @@ msgid "" msgstr "" "Rimuove il punto associato all'[param id] fornito dall'insieme di punti." +msgid "" +"Reserves space internally for [param num_nodes] points. Useful if you're " +"adding a known large number of points at once, such as points on a grid. The " +"new capacity must be greater or equal to the old capacity." +msgstr "" +"Riserva internamente lo spazio per il numero di punti [param num_nodes]. " +"Utile se si sta aggiungendo un gran numero di punti conosciuti alla volta, " +"come punti su una griglia. La nuova capacità deve essere maggiore o uguale " +"alla capacità precedente." + msgid "" "Disables or enables the specified point for pathfinding. Useful for making a " "temporary obstacle." @@ -11510,6 +16018,53 @@ msgstr "" "percorso.\n" "Si noti che questa funzione è nascosta nella classe predefinita [AStar3D]." +msgid "" +"Adds a new point at the given position with the given identifier. The [param " +"id] must be 0 or larger, and the [param weight_scale] must be 0.0 or " +"greater.\n" +"The [param weight_scale] is multiplied by the result of [method " +"_compute_cost] when determining the overall cost of traveling across a " +"segment from a neighboring point to this point. Thus, all else being equal, " +"the algorithm prefers points with lower [param weight_scale]s to form a " +"path.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar3D.new()\n" +"astar.add_point(1, Vector3(1, 0, 0), 4) # Adds the point (1, 0, 0) with " +"weight_scale 4 and id 1\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar3D();\n" +"astar.AddPoint(1, new Vector3(1, 0, 0), 4); // Adds the point (1, 0, 0) with " +"weight_scale 4 and id 1\n" +"[/csharp]\n" +"[/codeblocks]\n" +"If there already exists a point for the given [param id], its position and " +"weight scale are updated to the given values." +msgstr "" +"Aggiunge un nuovo punto nella posizione specificata con l'identificatore " +"specificato. [param id] deve essere uguale o superiore a 0 e [param " +"weight_scale] deve essere uguale o superiore a 0,0.\n" +"[param weight_scale] viene moltiplicato per il risultato di [method " +"_compute_cost] quando si determina il costo complessivo del viaggio " +"attraverso un segmento da un punto vicino a questo punto. Pertanto, a parità " +"di condizioni, l'algoritmo preferisce i punti con [param weight_scale] più " +"bassi per formare un percorso.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar3D.new()\n" +"astar.add_point(1, Vector3(1, 0, 0), 4) # Aggiunge il punto (1, 0, 0) con " +"weight_scale 4 e id 1\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar3D();\n" +"astar.AddPoint(1, nuovo Vector3(1, 0, 0), 4); // Aggiunge il punto (1, 0, 0) " +"con weight_scale 4 e id 1\n" +"[/csharp]\n" +"[/codeblocks]\n" +"Se esiste già un punto per l'[param id] specificato, la sua posizione e la " +"sua scala di peso vengono aggiornate ai valori specificati." + msgid "" "Returns whether the two given points are directly connected by a segment. If " "[param bidirectional] is [code]false[/code], returns whether movement from " @@ -11520,6 +16075,253 @@ msgstr "" "movimento da [param id] a [param to_id] è possibile attraverso questo " "segmento." +msgid "" +"Creates a segment between the given points. If [param bidirectional] is " +"[code]false[/code], only movement from [param id] to [param to_id] is " +"allowed, not the reverse direction.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar3D.new()\n" +"astar.add_point(1, Vector3(1, 1, 0))\n" +"astar.add_point(2, Vector3(0, 5, 0))\n" +"astar.connect_points(1, 2, false)\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar3D();\n" +"astar.AddPoint(1, new Vector3(1, 1, 0));\n" +"astar.AddPoint(2, new Vector3(0, 5, 0));\n" +"astar.ConnectPoints(1, 2, false);\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"Crea un segmento tra i punti specificati. Se [param bidirectional] è " +"[code]false[/code], è consentito solo il movimento da [param id] a [param " +"to_id], non la direzione opposta.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar3D.new()\n" +"astar.add_point(1, Vector3(1, 1, 0))\n" +"astar.add_point(2, Vector3(0, 5, 0))\n" +"astar.connect_points(1, 2, false)\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar3D();\n" +"astar.AddPoint(1, new Vector3(1, 1, 0));\n" +"astar.AddPoint(2, new Vector3(0, 5, 0));\n" +"astar.ConnectPoints(1, 2, false);\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns the closest position to [param to_position] that resides inside a " +"segment between two connected points.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar3D.new()\n" +"astar.add_point(1, Vector3(0, 0, 0))\n" +"astar.add_point(2, Vector3(0, 5, 0))\n" +"astar.connect_points(1, 2)\n" +"var res = astar.get_closest_position_in_segment(Vector3(3, 3, 0)) # Returns " +"(0, 3, 0)\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar3D();\n" +"astar.AddPoint(1, new Vector3(0, 0, 0));\n" +"astar.AddPoint(2, new Vector3(0, 5, 0));\n" +"astar.ConnectPoints(1, 2);\n" +"Vector3 res = astar.GetClosestPositionInSegment(new Vector3(3, 3, 0)); // " +"Returns (0, 3, 0)\n" +"[/csharp]\n" +"[/codeblocks]\n" +"The result is in the segment that goes from [code]y = 0[/code] to [code]y = " +"5[/code]. It's the closest position in the segment to the given point." +msgstr "" +"Restituisce la posizione più vicina a [param to_position] che si trova " +"all'interno di un segmento tra due punti collegati.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar3D.new()\n" +"astar.add_point(1, Vector3(0, 0, 0))\n" +"astar.add_point(2, Vector3(0, 5, 0))\n" +"astar.connect_points(1, 2)\n" +"var res = astar.get_closest_position_in_segment(Vector3(3, 3, 0)) # Returns " +"(0, 3, 0)\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar3D();\n" +"astar.AddPoint(1, new Vector3(0, 0, 0));\n" +"astar.AddPoint(2, new Vector3(0, 5, 0));\n" +"astar.ConnectPoints(1, 2);\n" +"Vector3 res = astar.GetClosestPositionInSegment(new Vector3(3, 3, 0)); // " +"Returns (0, 3, 0)\n" +"[/csharp]\n" +"[/codeblocks]\n" +"Il risultato è nel segmento che va da [code]y = 0[/code] a [code]y = 5[/" +"code]. È la posizione più vicina nel segmento al punto specificato." + +msgid "" +"Returns an array with the IDs of the points that form the path found by " +"AStar3D between the given points. The array is ordered from the starting " +"point to the ending point of the path.\n" +"If there is no valid path to the target, and [param allow_partial_path] is " +"[code]true[/code], returns a path to the point closest to the target that can " +"be reached.\n" +"[b]Note:[/b] When [param allow_partial_path] is [code]true[/code] and [param " +"to_id] is disabled the search may take an unusually long time to finish.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar3D.new()\n" +"astar.add_point(1, Vector3(0, 0, 0))\n" +"astar.add_point(2, Vector3(0, 1, 0), 1) # Default weight is 1\n" +"astar.add_point(3, Vector3(1, 1, 0))\n" +"astar.add_point(4, Vector3(2, 0, 0))\n" +"\n" +"astar.connect_points(1, 2, false)\n" +"astar.connect_points(2, 3, false)\n" +"astar.connect_points(4, 3, false)\n" +"astar.connect_points(1, 4, false)\n" +"\n" +"var res = astar.get_id_path(1, 3) # Returns [1, 2, 3]\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar3D();\n" +"astar.AddPoint(1, new Vector3(0, 0, 0));\n" +"astar.AddPoint(2, new Vector3(0, 1, 0), 1); // Default weight is 1\n" +"astar.AddPoint(3, new Vector3(1, 1, 0));\n" +"astar.AddPoint(4, new Vector3(2, 0, 0));\n" +"astar.ConnectPoints(1, 2, false);\n" +"astar.ConnectPoints(2, 3, false);\n" +"astar.ConnectPoints(4, 3, false);\n" +"astar.ConnectPoints(1, 4, false);\n" +"long[] res = astar.GetIdPath(1, 3); // Returns [1, 2, 3]\n" +"[/csharp]\n" +"[/codeblocks]\n" +"If you change the 2nd point's weight to 3, then the result will be [code][1, " +"4, 3][/code] instead, because now even though the distance is longer, it's " +"\"easier\" to get through point 4 than through point 2." +msgstr "" +"Restituisce un array con gli ID dei punti che formano il percorso trovato da " +"AStar3D tra i punti indicati. L'array è ordinato dal punto iniziale al punto " +"finale del percorso.\n" +"Se non c'è un percorso valido per la destinazione, e [param " +"allow_partial_path] è [code]true[/code], restituisce un percorso al punto più " +"vicino alla destinazione che può essere raggiunto.\n" +"[b]Nota:[/b] quando [param allow_partial_path] è [code]true[/code] e [param " +"to_id] è disabilitato, la ricerca potrebbe richiedere un tempo insolitamente " +"lungo per essere completata.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar3D.new()\n" +"astar.add_point(1, Vector3(0, 0, 0))\n" +"astar.add_point(2, Vector3(0, 1, 0), 1) # Il peso predefinito è 1\n" +"astar.add_point(3, Vector3(1, 1, 0))\n" +"astar.add_point(4, Vector3(2, 0, 0))\n" +"\n" +"astar.connect_points(1, 2, false)\n" +"astar.connect_points(2, 3, false)\n" +"astar.connect_points(4, 3, false)\n" +"astar.connect_points(1, 4, false)\n" +"\n" +"var res = astar.get_id_path(1, 3) # Restituisce [1, 2, 3]\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar3D();\n" +"astar.AddPoint(1, new Vector3(0, 0, 0));\n" +"astar.AddPoint(2, new Vector3(0, 1, 0), 1); // Il peso predefinito è 1\n" +"astar.AddPoint(3, new Vector3(1, 1, 0));\n" +"astar.AddPoint(4, new Vector3(2, 0, 0));\n" +"astar.ConnectPoints(1, 2, false);\n" +"astar.ConnectPoints(2, 3, false);\n" +"astar.ConnectPoints(4, 3, false);\n" +"astar.ConnectPoints(1, 4, false);\n" +"long[] res = astar.GetIdPath(1, 3); // Restituisce [1, 2, 3]\n" +"[/csharp]\n" +"[/codeblocks]\n" +"Se si cambia il peso a 3 per il punto 2, allora il risultato sarà [code][1, " +"4, 3][/code] invece, poiché adesso anche se la distanza è più lunga, è \"più " +"facile\" arrivare attraverso il punto 4 che attraverso il punto 2." + +msgid "" +"Returns an array with the IDs of the points that form the connection with the " +"given point.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar3D.new()\n" +"astar.add_point(1, Vector3(0, 0, 0))\n" +"astar.add_point(2, Vector3(0, 1, 0))\n" +"astar.add_point(3, Vector3(1, 1, 0))\n" +"astar.add_point(4, Vector3(2, 0, 0))\n" +"\n" +"astar.connect_points(1, 2, true)\n" +"astar.connect_points(1, 3, true)\n" +"\n" +"var neighbors = astar.get_point_connections(1) # Returns [2, 3]\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar3D();\n" +"astar.AddPoint(1, new Vector3(0, 0, 0));\n" +"astar.AddPoint(2, new Vector3(0, 1, 0));\n" +"astar.AddPoint(3, new Vector3(1, 1, 0));\n" +"astar.AddPoint(4, new Vector3(2, 0, 0));\n" +"astar.ConnectPoints(1, 2, true);\n" +"astar.ConnectPoints(1, 3, true);\n" +"\n" +"long[] neighbors = astar.GetPointConnections(1); // Returns [2, 3]\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"Restituisce un array con gli ID dei punti che formano la connessione con il " +"punto indicato.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar3D.new()\n" +"astar.add_point(1, Vector3(0, 0, 0))\n" +"astar.add_point(2, Vector3(0, 1, 0))\n" +"astar.add_point(3, Vector3(1, 1, 0))\n" +"astar.add_point(4, Vector3(2, 0, 0))\n" +"\n" +"astar.connect_points(1, 2, true)\n" +"astar.connect_points(1, 3, true)\n" +"\n" +"var neighbors = astar.get_point_connections(1) # Returns [2, 3]\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar3D();\n" +"astar.AddPoint(1, new Vector3(0, 0, 0));\n" +"astar.AddPoint(2, new Vector3(0, 1, 0));\n" +"astar.AddPoint(3, new Vector3(1, 1, 0));\n" +"astar.AddPoint(4, new Vector3(2, 0, 0));\n" +"astar.ConnectPoints(1, 2, true);\n" +"astar.ConnectPoints(1, 3, true);\n" +"\n" +"long[] neighbors = astar.GetPointConnections(1); // Returns [2, 3]\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns an array with the points that are in the path found by AStar3D " +"between the given points. The array is ordered from the starting point to the " +"ending point of the path.\n" +"If there is no valid path to the target, and [param allow_partial_path] is " +"[code]true[/code], returns a path to the point closest to the target that can " +"be reached.\n" +"[b]Note:[/b] This method is not thread-safe. If called from a [Thread], it " +"will return an empty array and will print an error message.\n" +"Additionally, when [param allow_partial_path] is [code]true[/code] and [param " +"to_id] is disabled the search may take an unusually long time to finish." +msgstr "" +"Restituisce un array con i punti che sono presenti nel percorso trovato da " +"AStar3D tra i punti indicati. L'array è ordinato dal punto iniziale al punto " +"finale del percorso.\n" +"Se non c'è un percorso valido per l'obiettivo, e [param allow_partial_path] è " +"[code]true[/code], restituisce un percorso al punto più vicino all'obiettivo " +"che può essere raggiunto.\n" +"[b]Nota:[/b] Questo metodo non è thread-safe. Se chiamato da un [Thread], " +"restituirà un array vuoto e stamperà un messaggio di errore.\n" +"Inoltre, quando [param allow_partial_path] è [code]true[/code] e [param " +"to_id] è disabilitato, la ricerca potrebbe richiedere un tempo insolitamente " +"lungo per essere completata." + msgid "" "Reserves space internally for [param num_nodes] points. Useful if you're " "adding a known large number of points at once, such as points on a grid. New " @@ -11537,6 +16339,74 @@ msgstr "" "Un'implementazione di A* per trovare il percorso più breve tra due punti su " "una griglia parziale 2D." +msgid "" +"[AStarGrid2D] is a variant of [AStar2D] that is specialized for partial 2D " +"grids. It is simpler to use because it doesn't require you to manually create " +"points and connect them together. This class also supports multiple types of " +"heuristics, modes for diagonal movement, and a jumping mode to speed up " +"calculations.\n" +"To use [AStarGrid2D], you only need to set the [member region] of the grid, " +"optionally set the [member cell_size], and then call the [method update] " +"method:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar_grid = AStarGrid2D.new()\n" +"astar_grid.region = Rect2i(0, 0, 32, 32)\n" +"astar_grid.cell_size = Vector2(16, 16)\n" +"astar_grid.update()\n" +"print(astar_grid.get_id_path(Vector2i(0, 0), Vector2i(3, 4))) # Prints [(0, " +"0), (1, 1), (2, 2), (3, 3), (3, 4)]\n" +"print(astar_grid.get_point_path(Vector2i(0, 0), Vector2i(3, 4))) # Prints " +"[(0, 0), (16, 16), (32, 32), (48, 48), (48, 64)]\n" +"[/gdscript]\n" +"[csharp]\n" +"AStarGrid2D astarGrid = new AStarGrid2D();\n" +"astarGrid.Region = new Rect2I(0, 0, 32, 32);\n" +"astarGrid.CellSize = new Vector2I(16, 16);\n" +"astarGrid.Update();\n" +"GD.Print(astarGrid.GetIdPath(Vector2I.Zero, new Vector2I(3, 4))); // Prints " +"[(0, 0), (1, 1), (2, 2), (3, 3), (3, 4)]\n" +"GD.Print(astarGrid.GetPointPath(Vector2I.Zero, new Vector2I(3, 4))); // " +"Prints [(0, 0), (16, 16), (32, 32), (48, 48), (48, 64)]\n" +"[/csharp]\n" +"[/codeblocks]\n" +"To remove a point from the pathfinding grid, it must be set as \"solid\" with " +"[method set_point_solid]." +msgstr "" +"[AStarGrid2D] è una variante di [AStar2D] che è specializzata per le griglie " +"2D parziali. È più semplice da usare perché non richiede di creare " +"manualmente i punti e collegarli insieme. Questa classe supporta anche più " +"tipi di euristica, modalità per movimento diagonale, e una modalità di salto " +"per accelerare i calcoli.\n" +"Per utilizzare [AStarGrid2D], è sufficiente solo impostare la regione " +"([member region]) della griglia, impostando facoltativamente le dimensioni " +"della cella ([member cell_size]), e infine chiamare il metodo [method " +"update]:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar_grid = AStarGrid2D.new()\n" +"astar_grid.region = Rect2i(0, 0, 32, 32)\n" +"astar_grid.cell_size = Vector2(16, 16)\n" +"astar_grid.update()\n" +"print(astar_grid.get_id_path(Vector2i(0, 0), Vector2i(3, 4))) # Stampa [(0, " +"0), (1, 1), (2, 2), (3, 3), (3, 4)]\n" +"print(astar_grid.get_point_path(Vector2i(0, 0), Vector2i(3, 4))) # Stampa " +"[(0, 0), (16, 16), (32, 32), (48, 48), (48, 64)]\n" +"[/gdscript]\n" +"[csharp]\n" +"AStarGrid2D astarGrid = new AStarGrid2D();\n" +"astarGrid.Region = new Rect2I(0, 0, 32, 32);\n" +"astarGrid.CellSize = new Vector2I(16, 16);\n" +"astarGrid.Update();\n" +"GD.Print(astarGrid.GetIdPath(Vector2I.Zero, new Vector2I(3, 4))); // Stampa " +"[(0, 0), (1, 1), (2, 2), (3, 3), (3, 4)]\n" +"GD.Print(astarGrid.GetPointPath(Vector2I.Zero, new Vector2I(3, 4))); // " +"Stampa [(0, 0), (16, 16), (32, 32), (48, 48), (48, 64)]\n" +"[/csharp]\n" +"[/codeblocks]\n" +"Per rimuovere un punto dalla griglia di rilevamento del percorso, deve essere " +"impostato come \"solido\" con [method set_point_solid]." + msgid "" "Called when computing the cost between two connected points.\n" "Note that this function is hidden in the default [AStarGrid2D] class." @@ -11581,6 +16451,59 @@ msgstr "" "[b]Nota:[/b] Chiamare [method update] non è necessario dopo aver chiamato " "questa funzione." +msgid "" +"Returns an array with the IDs of the points that form the path found by " +"AStar2D between the given points. The array is ordered from the starting " +"point to the ending point of the path.\n" +"If there is no valid path to the target, and [param allow_partial_path] is " +"[code]true[/code], returns a path to the point closest to the target that can " +"be reached.\n" +"[b]Note:[/b] When [param allow_partial_path] is [code]true[/code] and [param " +"to_id] is solid the search may take an unusually long time to finish." +msgstr "" +"Restituisce un array con i punti che formano il percorso trovato da AStar2D " +"tra i punti indicati. L'array è ordinato dal punto iniziale al punto finale " +"del percorso.\n" +"Se non c'è un percorso valido per la destinazione, e [param " +"allow_partial_path] è [code]true[/code], restituisce un percorso al punto più " +"vicino alla destinazione che può essere raggiunto.\n" +"[b]Nota:[/b] quando [param allow_partial_path] è [code]true[/code] e [param " +"to_id] è solido, la ricerca potrebbe richiedere un tempo insolitamente lungo " +"per essere completata." + +msgid "" +"Returns an array of dictionaries with point data ([code]id[/code]: " +"[Vector2i], [code]position[/code]: [Vector2], [code]solid[/code]: [bool], " +"[code]weight_scale[/code]: [float]) within a [param region]." +msgstr "" +"Restituisce un array di dizionari con i dati dei punti ([code]id[/code]: " +"[Vector2i], [code]position[/code]: [Vector2], [code]solid[/code]: [bool], " +"[code]weight_scale[/code]: [float]) all'interno della regione [param region]." + +msgid "" +"Returns an array with the points that are in the path found by [AStarGrid2D] " +"between the given points. The array is ordered from the starting point to the " +"ending point of the path.\n" +"If there is no valid path to the target, and [param allow_partial_path] is " +"[code]true[/code], returns a path to the point closest to the target that can " +"be reached.\n" +"[b]Note:[/b] This method is not thread-safe. If called from a [Thread], it " +"will return an empty array and will print an error message.\n" +"Additionally, when [param allow_partial_path] is [code]true[/code] and [param " +"to_id] is solid the search may take an unusually long time to finish." +msgstr "" +"Restituisce un array con i punti che sono presenti nel percorso trovato da " +"AStar2D tra i punti indicati. L'array è ordinato dal punto iniziale al punto " +"finale del percorso.\n" +"Se non c'è un percorso valido per la destinazione, e [param " +"allow_partial_path] è [code]true[/code], restituisce un percorso al punto più " +"vicino alla destinazione che può essere raggiunto.\n" +"[b]Nota:[/b] Questo metodo non è thread-safe. Se chiamato da un [Thread], " +"restituirà un array vuoto e stamperà un messaggio di errore.\n" +"Inoltre, quando [param allow_partial_path] è [code]true[/code] e [param " +"to_id] è solido, la ricerca potrebbe richiedere un tempo insolitamente lungo " +"per essere completata." + msgid "" "Indicates that the grid parameters were changed and [method update] needs to " "be called." @@ -11881,6 +16804,29 @@ msgstr "Rappresenta la dimensione dell'enumerazione [enum CellShape]." msgid "A texture that crops out part of another Texture2D." msgstr "Una texture che ritaglia parte di un'altra Texture2D." +msgid "" +"[Texture2D] resource that draws only part of its [member atlas] texture, as " +"defined by the [member region]. An additional [member margin] can also be " +"set, which is useful for small adjustments.\n" +"Multiple [AtlasTexture] resources can be cropped from the same [member " +"atlas]. Packing many smaller textures into a singular large texture helps to " +"optimize video memory costs and render calls.\n" +"[b]Note:[/b] [AtlasTexture] cannot be used in an [AnimatedTexture], and will " +"not tile properly in nodes such as [TextureRect] or [Sprite2D]. To tile an " +"[AtlasTexture], modify its [member region] instead." +msgstr "" +"Risorsa [Texture2D] che disegna solo parte della sua texture [member atlas], " +"come definita dalla regione ([member region]). È inoltre possibile impostare " +"un ulteriore [member margin], che è utile per piccoli aggiustamenti.\n" +"È possibile ritagliare molteplici risorse [AtlasTexture] dallo stesso [member " +"atlas]. Impacchettare molte texture più piccole in una singola, grande " +"texture aiuta a ottimizzare i costi di memoria video e delle chiamate per il " +"rendering.\n" +"[b]Nota:[/b] [AtlasTexture] non può essere utilizzato in un [AnimatedTexture] " +"e potrebbe non ripetersi correttamente in nodi come [TextureRect] o " +"[Sprite2D]. Per ripetere un [AtlasTexture], modifica invece la sua [member " +"region]." + msgid "" "The texture that contains the atlas. Can be any type inheriting from " "[Texture2D], including another [AtlasTexture]." @@ -12006,6 +16952,21 @@ msgstr "" "forte, i valori negativi lo rendono più silenzioso. Il valore può variare da " "-80 a 24." +msgid "" +"Amount of amplification as a linear value.\n" +"[b]Note:[/b] This member modifies [member volume_db] for convenience. The " +"returned value is equivalent to the result of [method @GlobalScope." +"db_to_linear] on [member volume_db]. Setting this member is equivalent to " +"setting [member volume_db] to the result of [method @GlobalScope." +"linear_to_db] on a value." +msgstr "" +"Quantità di amplificazione come valore lineare.\n" +"[b]Nota:[/b] Questo membro modifica [member volume_db] per comodità. Il " +"valore restituito è equivalente al risultato di [method @GlobalScope." +"db_to_linear] su [member volume_db]. Impostare questo membro equivale a " +"impostare [member volume_db] sul risultato di [method @GlobalScope." +"linear_to_db] su un valore." + msgid "Adds a band limit filter to the audio bus." msgstr "Aggiunge un filtro limite di banda al bus audio." @@ -12553,6 +17514,13 @@ msgstr "Consente le frequenze diverse da [member cutoff_hz] a passare." msgid "Threshold frequency for the filter, in Hz." msgstr "Frequenza di soglia per il filtro, in Hz." +msgid "" +"Steepness of the cutoff curve in dB per octave, also known as the order of " +"the filter. Higher orders have a more aggressive cutoff." +msgstr "" +"Pendenza della curva di taglio in dB per ottava, nota anche come ordine del " +"filtro. Gli ordini più elevati hanno un taglio più aggressivo." + msgid "Gain amount of the frequencies after the filter." msgstr "Quantità di guadagno delle frequenze dopo il filtro." @@ -12560,6 +17528,18 @@ msgid "Amount of boost in the frequency range near the cutoff frequency." msgstr "" "Quantità di aumento della gamma di frequenza vicino alla frequenza di taglio." +msgid "Cutting off at 6dB per octave." +msgstr "Taglio a 6dB per ottava." + +msgid "Cutting off at 12dB per octave." +msgstr "Taglio a 12dB per ottava." + +msgid "Cutting off at 18dB per octave." +msgstr "Taglio a 18dB per ottava." + +msgid "Cutting off at 24dB per octave." +msgstr "Taglio a 24dB per ottava." + msgid "Adds a hard limiter audio effect to an Audio bus." msgstr "Aggiunge un effetto audio di limitatore rigido a un bus audio." @@ -12760,6 +17740,15 @@ msgstr "" "Combina i segnali sfasati con il segnale originale. Il movimento dei segnali " "sfasati è controllato utilizzando un oscillatore a bassa frequenza." +msgid "" +"Governs how high the filter frequencies sweep. Low value will primarily " +"affect bass frequencies. High value can sweep high into the treble. Value can " +"range from 0.1 to 4." +msgstr "" +"Regola quanto in alto si spostano le frequenze del filtro. Un valore basso " +"influenzerà principalmente le frequenze dei bassi. Un valore elevato può " +"arrivare fino agli acuti. Il valore può variare da 0,1 a 4." + msgid "Output percent of modified sound. Value can range from 0.1 to 0.9." msgstr "" "Percentuale in uscita del suono modificato. Il valore può variare da 0,1 a " @@ -12779,6 +17768,13 @@ msgstr "" "Determina la frequenza minima influenzata dalle modulazioni di LFO, in Hz. Il " "valore può variare da 10 a 10000." +msgid "" +"Adjusts the rate in Hz at which the effect sweeps up and down across the " +"frequency range." +msgstr "" +"Regola la velocità in Hz alla quale l'effetto scorre in alto e in basso lungo " +"l'intervallo di frequenza." + msgid "" "Adds a pitch-shifting audio effect to an audio bus.\n" "Raises or lowers the pitch of original sound." @@ -12988,6 +17984,21 @@ msgstr "" "Effetto audio che può essere utilizzato per le visualizzazioni di audio in " "tempo reale." +msgid "" +"This audio effect does not affect sound output, but can be used for real-time " +"audio visualizations.\n" +"This resource configures an [AudioEffectSpectrumAnalyzerInstance], which " +"performs the actual analysis at runtime. An instance can be obtained with " +"[method AudioServer.get_bus_effect_instance].\n" +"See also [AudioStreamGenerator] for procedurally generating sounds." +msgstr "" +"Questo effetto audio non influisce sul suono riprodotto, ma può essere " +"utilizzato per visualizzare l'audio in tempo reale.\n" +"Questa risorsa configura un [AudioEffectSpectrumAnalyzerInstance], il quale " +"effettivamente analizza lo spettro audio durante l'esecuzione. È possibile " +"ottenere un'istanza con [method AudioServer.get_bus_effect_instance].\n" +"Vedi anche [AudioStreamGenerator] per generare proceduralmente i suoni." + msgid "Audio Spectrum Visualizer Demo" msgstr "Demo di visualizzatore spettro audio" @@ -13014,6 +18025,18 @@ msgstr "" msgid "Queryable instance of an [AudioEffectSpectrumAnalyzer]." msgstr "Istanza interrogabile di un [AudioEffectSpectrumAnalyzer]." +msgid "" +"The runtime part of an [AudioEffectSpectrumAnalyzer], which can be used to " +"query the magnitude of a frequency range on its host bus.\n" +"An instance of this class can be obtained with [method AudioServer." +"get_bus_effect_instance]." +msgstr "" +"La parte in esecuzione di un [AudioEffectSpectrumAnalyzer], che può essere " +"utilizzata per richiedere l'ampiezza di un intervallo di frequenza sul suo " +"bus host.\n" +"È possibile ottenere un'istanza di questa classe con [method AudioServer." +"get_bus_effect_instance]." + msgid "" "Returns the magnitude of the frequencies from [param from_hz] to [param " "to_hz] in linear energy as a Vector2. The [code]x[/code] component of the " @@ -13042,6 +18065,22 @@ msgstr "" "Un effetto audio che può essere utilizzato per regolare l'intensità del " "panning in stereo." +msgid "" +"Amplifies the difference between stereo channels, increasing or decreasing " +"existing panning. A value of 0.0 will downmix stereo to mono. Does not affect " +"a mono signal." +msgstr "" +"Amplifica la differenza tra i canali stereo, aumentando o diminuendo il " +"panning esistente. Un valore pari a 0,0 convertirà un segnale stereo in mono. " +"Non influenza un segnale mono." + +msgid "" +"Widens sound stage through phase shifting in conjunction with [member " +"surround]. Just delays the right channel if [member surround] is 0." +msgstr "" +"Amplia la scena sonora tramite phase shifting, in combinazione con [member " +"surround]. Ritarda solo il canale destro se [member surround] è 0." + msgid "Overrides the location sounds are heard from." msgstr "Sostituisce la posizione da cui si sentono i suoni." @@ -13058,7 +18097,7 @@ msgstr "" "make_current], questo nodo sostituirà la posizione da cui si sentono i suoni. " "Solo un [AudioListener2D] può essere attuale. Utilizzare [method " "make_current] disabiliterà il [AudioListener2D] precedente.\n" -"Se non è presente alcun [AudioListener2D] attivo nel [Viewport] attuale, il " +"Se non è presente alcun [AudioListener2D] attivo nella [Viewport] attuale, il " "centro dello schermo sarà utilizzato come punto di ascolto dell'audio. " "[AudioListener2D] deve essere all'interno di un [SceneTree] per poter " "funzionare." @@ -13208,6 +18247,31 @@ msgstr "" msgid "Returns the volume of the bus at index [param bus_idx] in dB." msgstr "Restituisce il volume del bus all'indice [param bus_idx] in dB." +msgid "" +"Returns the volume of the bus at index [param bus_idx] as a linear value.\n" +"[b]Note:[/b] The returned value is equivalent to the result of [method " +"@GlobalScope.db_to_linear] on the result of [method get_bus_volume_db]." +msgstr "" +"Restituisce il volume del bus all'indice [param bus_idx] come valore " +"lineare.\n" +"[b]Nota:[/b] Il valore restituito è equivalente al risultato del [metodo " +"@GlobalScope.db_to_linear] sul risultato di [method get_bus_volume_db]." + +msgid "" +"Returns the name of the current audio driver. The default usually depends on " +"the operating system, but may be overridden via the [code]--audio-driver[/" +"code] [url=$DOCS_URL/tutorials/editor/command_line_tutorial.html]command line " +"argument[/url]. [code]--headless[/code] also automatically sets the audio " +"driver to [code]Dummy[/code]. See also [member ProjectSettings.audio/driver/" +"driver]." +msgstr "" +"Restituisce il nome del driver audio attuale. Il valore predefinito " +"solitamente dipende dal sistema operativo, ma può essere sostituito tramite " +"l'[url=$DOCS_URL/tutorials/editor/command_line_tutorial.html]argomento della " +"riga di comando[/url] [code]--audio-driver[/code]. [code]--headless[/code] " +"imposta automaticamente il driver audio su [code]Dummy[/code]. Vedi anche " +"[member ProjectSettings.audio/driver/driver]." + msgid "" "Returns the names of all audio input devices detected on the system.\n" "[b]Note:[/b] [member ProjectSettings.audio/driver/enable_input] must be " @@ -13222,6 +18286,10 @@ msgstr "" "descrizione di quella impostazione per avvertenze riguardo le autorizzazioni " "e le impostazioni sulla privacy del sistema operativo." +msgid "Returns the sample rate at the input of the [AudioServer]." +msgstr "" +"Restituisce la frequenza di campionamento all'uscita dell'[AudioServer]." + msgid "Returns the sample rate at the output of the [AudioServer]." msgstr "Restituisce la frequenza di campionamento all'uscita del [AudioServer]." @@ -13249,6 +18317,10 @@ msgstr "Restituisce la configurazione degli speaker." msgid "Returns the relative time since the last mix occurred." msgstr "Restituisce il tempo relativo trascorso dall'ultimo mixaggio." +msgid "Returns the relative time until the next mix occurs." +msgstr "" +"Restituisce il tempo relativo fino al verificarsi del mixaggio successivo." + msgid "" "If [code]true[/code], the bus at index [param bus_idx] is bypassing effects." msgstr "" @@ -13282,6 +18354,13 @@ msgstr "" "riprodotto. Per prevenire i picchi di ritardo, registra il flusso come " "campione con [method register_stream_as_sample]." +msgid "" +"Locks the audio driver's main loop.\n" +"[b]Note:[/b] Remember to unlock it afterwards." +msgstr "" +"Blocca il ciclo principale del driver audio.\n" +"[b]Nota:[/b] Ricorda di sbloccarlo successivamente." + msgid "Moves the bus from index [param index] to index [param to_index]." msgstr "Sposta il bus dall'indice [param index] all'indice [param to_index]." @@ -13322,6 +18401,26 @@ msgstr "" "Collega l'uscita del bus all'indice [param bus_idx] al bus con il nome [param " "send]." +msgid "" +"Sets the volume in decibels of the bus at index [param bus_idx] to [param " +"volume_db]." +msgstr "" +"Imposta il volume in decibel del bus all'indice [param bus_idx] su [param " +"volume_db]." + +msgid "" +"Sets the volume as a linear value of the bus at index [param bus_idx] to " +"[param volume_linear].\n" +"[b]Note:[/b] Using this method is equivalent to calling [method " +"set_bus_volume_db] with the result of [method @GlobalScope.linear_to_db] on a " +"value." +msgstr "" +"Imposta il volume come valore lineare del bus all'indice [param bus_idx] su " +"[param volume_linear].\n" +"[b]Nota:[/b] L'utilizzo di questo metodo equivale a chiamare [method " +"set_bus_volume_db] con il risultato di [method @GlobalScope.linear_to_db] su " +"un valore." + msgid "" "If set to [code]true[/code], all instances of [AudioStreamPlayback] will call " "[method AudioStreamPlayback._tag_used_streams] every mix step.\n" @@ -13467,6 +18566,10 @@ msgstr "Flussi audio" msgid "Audio Generator Demo" msgstr "Demo di generatore audio" +msgid "Override this method to return the bar beats of this stream." +msgstr "" +"Sostituisci questo metodo restituire i battiti per battuta di questo flusso." + msgid "" "Overridable method. Should return the total number of beats of this audio " "stream. Used by the engine to determine the position of every beat.\n" @@ -13517,6 +18620,21 @@ msgstr "" "Sovrascrivi questo metodo per personalizzare il nome assegnato a questo " "flusso audio. Non usato dal motore." +msgid "" +"Override this method to return [code]true[/code] if this stream has a loop." +msgstr "" +"Sostituisci questo metodo restituire [code]true[/code] se questo flusso si " +"ripete." + +msgid "" +"Override this method to customize the returned value of [method " +"instantiate_playback]. Should return a new [AudioStreamPlayback] created when " +"the stream is played (such as by an [AudioStreamPlayer])." +msgstr "" +"Sovrascrivi questo metodo per personalizzare il valore restituito da [method " +"instantiate_playback]. Dovrebbe restituire un nuovo [AudioStreamPlayback] " +"creato quando il flusso viene riprodotto (come da un [AudioStreamPlayer]." + msgid "" "Override this method to customize the returned value of [method " "is_monophonic]. Should return [code]true[/code] if this audio stream only " @@ -13576,6 +18694,147 @@ msgstr "" msgid "An audio stream with utilities for procedural sound generation." msgstr "Un flusso audio con utilità per la generazione del suono procedurale." +msgid "" +"[AudioStreamGenerator] is a type of audio stream that does not play back " +"sounds on its own; instead, it expects a script to generate audio data for " +"it. See also [AudioStreamGeneratorPlayback].\n" +"Here's a sample on how to use it to generate a sine wave:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var playback # Will hold the AudioStreamGeneratorPlayback.\n" +"@onready var sample_hz = $AudioStreamPlayer.stream.mix_rate\n" +"var pulse_hz = 440.0 # The frequency of the sound wave.\n" +"var phase = 0.0\n" +"\n" +"func _ready():\n" +" $AudioStreamPlayer.play()\n" +" playback = $AudioStreamPlayer.get_stream_playback()\n" +" fill_buffer()\n" +"\n" +"func fill_buffer():\n" +" var increment = pulse_hz / sample_hz\n" +" var frames_available = playback.get_frames_available()\n" +"\n" +" for i in range(frames_available):\n" +" playback.push_frame(Vector2.ONE * sin(phase * TAU))\n" +" phase = fmod(phase + increment, 1.0)\n" +"[/gdscript]\n" +"[csharp]\n" +"[Export] public AudioStreamPlayer Player { get; set; }\n" +"\n" +"private AudioStreamGeneratorPlayback _playback; // Will hold the " +"AudioStreamGeneratorPlayback.\n" +"private float _sampleHz;\n" +"private float _pulseHz = 440.0f; // The frequency of the sound wave.\n" +"private double phase = 0.0;\n" +"\n" +"public override void _Ready()\n" +"{\n" +" if (Player.Stream is AudioStreamGenerator generator) // Type as a " +"generator to access MixRate.\n" +" {\n" +" _sampleHz = generator.MixRate;\n" +" Player.Play();\n" +" _playback = (AudioStreamGeneratorPlayback)Player." +"GetStreamPlayback();\n" +" FillBuffer();\n" +" }\n" +"}\n" +"\n" +"public void FillBuffer()\n" +"{\n" +" float increment = _pulseHz / _sampleHz;\n" +" int framesAvailable = _playback.GetFramesAvailable();\n" +"\n" +" for (int i = 0; i < framesAvailable; i++)\n" +" {\n" +" _playback.PushFrame(Vector2.One * (float)Mathf.Sin(phase * Mathf." +"Tau));\n" +" phase = Mathf.PosMod(phase + increment, 1.0);\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"In the example above, the \"AudioStreamPlayer\" node must use an " +"[AudioStreamGenerator] as its stream. The [code]fill_buffer[/code] function " +"provides audio data for approximating a sine wave.\n" +"See also [AudioEffectSpectrumAnalyzer] for performing real-time audio " +"spectrum analysis.\n" +"[b]Note:[/b] Due to performance constraints, this class is best used from C# " +"or from a compiled language via GDExtension. If you still want to use this " +"class from GDScript, consider using a lower [member mix_rate] such as 11,025 " +"Hz or 22,050 Hz." +msgstr "" +"[AudioStreamGenerator] è un tipo di flusso audio che non riproduce suoni da " +"solo; invece, si aspetta che uno script generi dati audio per esso. Vedi " +"anche [AudioStreamGeneratorPlayback].\n" +"Ecco un esempio su come utilizzarlo per generare un'onda sinusoidale:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var playback # Conterrà l'AudioStreamGeneratorPlayback.\n" +"@onready var sample_hz = $AudioStreamPlayer.stream.mix_rate\n" +"var pulse_hz = 440.0 # La frequenza dell'onda sonora.\n" +"var phase = 0.0\n" +"\n" +"func _ready():\n" +" $AudioStreamPlayer.play()\n" +" playback = $AudioStreamPlayer.get_stream_playback()\n" +" fill_buffer()\n" +"\n" +"func fill_buffer():\n" +" var increment = pulse_hz / sample_hz\n" +" var frames_available = playback.get_frames_available()\n" +"\n" +" for i in range(frames_available):\n" +" playback.push_frame(Vector2.ONE * sin(phase * TAU))\n" +" phase = fmod(phase + increment, 1.0)\n" +"[/gdscript]\n" +"[csharp]\n" +"[Export] public AudioStreamPlayer Player { get; set; }\n" +"\n" +"private AudioStreamGeneratorPlayback _playback; // Conterrà " +"l'AudioStreamGeneratorPlayback.\n" +"private float _sampleHz;\n" +"private float _pulseHz = 440.0f; // La frequenza dell'onda sonora.\n" +"private double phase = 0.0;\n" +"\n" +"public override void _Ready()\n" +"{\n" +" if (Player.Stream is AudioStreamGenerator generator) // Tipo come un " +"generatore per accedere a MixRate.\n" +" {\n" +" _sampleHz = generator.MixRate;\n" +" Player.Play();\n" +" _playback = (AudioStreamGeneratorPlayback)Player." +"GetStreamPlayback();\n" +" FillBuffer();\n" +" }\n" +"}\n" +"\n" +"public void FillBuffer()\n" +"{\n" +" float increment = _pulseHz / _sampleHz;\n" +" int framesAvailable = _playback.GetFramesAvailable();\n" +"\n" +" for (int i = 0; i < framesAvailable; i++)\n" +" {\n" +" _playback.PushFrame(Vector2.One * (float)Mathf.Sin(phase * Mathf." +"Tau));\n" +" phase = Mathf.PosMod(phase + increment, 1.0);\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"Nell'esempio sopra, il nodo \"AudioStreamPlayer\" deve usare un " +"[AudioStreamGenerator] come flusso. La funzione [code]fill_buffer[/code] " +"fornisce dati audio per approssimare un'onda sinusoidale.\n" +"Vedi anche [AudioEffectSpectrumAnalyzer] per analizzare uno spettro audio in " +"tempo reale.\n" +"[b]Nota:[/b] A causa di vincoli di prestazioni, questa classe è meglio " +"utilizzata da C# o da un linguaggio compilato tramite GDExtension. Se si " +"desidera comunque utilizzare questa classe da GDScript, considera l'utilizzo " +"di un [member mix_rate] inferiore, ad esempio 11.025 Hz o 22.050 Hz." + msgid "" "The length of the buffer to generate (in seconds). Lower values result in " "less latency, but require the script to generate audio data faster, resulting " @@ -13587,6 +18846,59 @@ msgstr "" "più velocemente, risultando in maggiore utilizzo CPU e più rischio di audio " "scoppiettante se la CPU non riesce a tenere il passo." +msgid "" +"The sample rate to use (in Hz). Higher values are more demanding for the CPU " +"to generate, but result in better quality.\n" +"In games, common sample rates in use are [code]11025[/code], [code]16000[/" +"code], [code]22050[/code], [code]32000[/code], [code]44100[/code], and " +"[code]48000[/code].\n" +"According to the [url=https://en.wikipedia.org/wiki/" +"Nyquist%E2%80%93Shannon_sampling_theorem]Nyquist-Shannon sampling theorem[/" +"url], there is no quality difference to human hearing when going past 40,000 " +"Hz (since most humans can only hear up to ~20,000 Hz, often less). If you are " +"generating lower-pitched sounds such as voices, lower sample rates such as " +"[code]32000[/code] or [code]22050[/code] may be usable with no loss in " +"quality.\n" +"[b]Note:[/b] [AudioStreamGenerator] is not automatically resampling input " +"data, to produce expected result [member mix_rate_mode] should match the " +"sampling rate of input data.\n" +"[b]Note:[/b] If you are using [AudioEffectCapture] as the source of your " +"data, set [member mix_rate_mode] to [constant MIX_RATE_INPUT] or [constant " +"MIX_RATE_OUTPUT] to automatically match current [AudioServer] mixing rate." +msgstr "" +"La frequenza di campionamento da utilizzare (in Hz). I valori elevati " +"richiedono una generazione più impegnativa per la CPU, ma risultano in una " +"qualità migliore.\n" +"Nei giochi, le frequenze di campionamento comunemente in uso sono " +"[code]11025[/code], [code]16000[/code], [code]22050[/code], [code]32000[/" +"code], [code]44100[/code] e [code]48000[/code].\n" +"Secondo il [url=https://it.wikipedia.org/wiki/" +"Teorema_del_campionamento_di_Nyquist-Shannon]Teorema del campionamento di " +"Nyquist-Shannon[/url], non vi è alcuna differenza di qualità per l'udito " +"umano quando si superano i 40.000 Hz (poiché la maggior parte degli esseri " +"umani può sentire solo fino a ~ 20.000 Hz, spesso meno). Se stai generando " +"suoni dal tono più basso come le voci, le frequenze di campionamento più " +"basse come [code]32000[/code] o [code]22050[/code] potrebbero essere usabili " +"senza perdite di qualità.\n" +"[b]Nota:[/b] [AudioStreamGenerator] non ricampiona automaticamente i dati in " +"ingresso, per produrre il risultato previsto [member mix_rate_mode] deve " +"corrispondere alla frequenza di campionamento dei dati in ingresso.\n" +"[b]Nota:[/b] Se utilizzi [AudioEffectCapture] come sorgente dei tuoi dati, " +"imposta [member mix_rate_mode] su [constant MIX_RATE_INPUT] o [constant " +"MIX_RATE_OUTPUT] per corrispondere automaticamente alla frequenza di mixaggio " +"attuale dell'[AudioServer]." + +msgid "" +"Mixing rate mode. If set to [constant MIX_RATE_CUSTOM], [member mix_rate] is " +"used, otherwise current [AudioServer] mixing rate is used." +msgstr "" +"Modalità di mixaggio. Se impostato su [constant MIX_RATE_CUSTOM], viene " +"utilizzato [member mix_rate], altrimenti viene utilizzato il mixaggio " +"dell'[AudioServer] attuale." + +msgid "Custom mixing rate, specified by [member mix_rate]." +msgstr "Frequenza di mixaggio personalizzata, specificata da [member mix_rate]." + msgid "Plays back audio generated using [AudioStreamGenerator]." msgstr "Riproduce l'audio generato usando un [AudioStreamGenerator]." @@ -13656,6 +18968,67 @@ msgstr "" "Flusso audio in grado di riprodurre musica in modo interattivo, combinando i " "clip e una tabella di transizione." +msgid "" +"Add a transition between two clips. Provide the indices of the source and " +"destination clips, or use the [constant CLIP_ANY] constant to indicate that " +"transition happens to/from any clip to this one.\n" +"* [param from_time] indicates the moment in the current clip the transition " +"will begin after triggered.\n" +"* [param to_time] indicates the time in the next clip that the playback will " +"start from.\n" +"* [param fade_mode] indicates how the fade will happen between clips. If " +"unsure, just use [constant FADE_AUTOMATIC] which uses the most common type of " +"fade for each situation.\n" +"* [param fade_beats] indicates how many beats the fade will take. Using " +"decimals is allowed.\n" +"* [param use_filler_clip] indicates that there will be a filler clip used " +"between the source and destination clips.\n" +"* [param filler_clip] the index of the filler clip.\n" +"* If [param hold_previous] is used, then this clip will be remembered. This " +"can be used together with [constant AUTO_ADVANCE_RETURN_TO_HOLD] to return to " +"this clip after another is done playing." +msgstr "" +"Aggiungi una transizione tra due clip. Fornisci gli indici delle clip di " +"origine e destinazione, oppure usa la costante [constant CLIP_ANY] per " +"indicare che la transizione avviene da/a qualsiasi clip a questa.\n" +"* [param from_time] indica il momento nella clip attuale in cui inizierà la " +"transizione dopo l'attivazione.\n" +"* [param to_time] indica il momento nella clip successiva da cui inizierà la " +"riproduzione.\n" +"* [param fade_mode] indica come avverrà la dissolvenza tra le clip. Se non " +"sei sicuro, usa [constant FADE_AUTOMATIC] il quale usa il tipo di dissolvenza " +"più comune per ogni situazione.\n" +"* [param fade_beats] indica quanti battiti richiederà la dissolvenza. È " +"consentito usare i decimali.\n" +"* [param use_filler_clip] indica che verrà usata una clip di riempimento tra " +"le clip di origine e destinazione.\n" +"* [param filler_clip] l'indice della clip di riempimento.\n" +"* Se viene usato [param hold_previous], questa clip verrà ricordata. Può " +"essere utilizzato insieme a [constant AUTO_ADVANCE_RETURN_TO_HOLD] per " +"tornare a questa clip dopo che un'altra ha terminato la riproduzione." + +msgid "" +"Erase a transition by providing [param from_clip] and [param to_clip] clip " +"indices. [constant CLIP_ANY] can be used for either argument or both." +msgstr "" +"Cancella una transizione fornendo gli indici di clip [param from_clip] e " +"[param to_clip]. [constant CLIP_ANY] può essere utilizzato per uno degli " +"argomenti o per entrambi." + +msgid "" +"Return whether a clip has auto-advance enabled. See [method " +"set_clip_auto_advance]." +msgstr "" +"Restituisce se una clip ha l'avanzamento automatico abilitato. Vedi [method " +"set_clip_auto_advance]." + +msgid "" +"Return the clip towards which the clip referenced by [param clip_index] will " +"auto-advance to." +msgstr "" +"Restituisce la clip verso la quale avanzerà automaticamente la clip a cui fa " +"riferimento l'indice [param clip_index]." + msgid "Return the [AudioStream] associated with a clip." msgstr "Restituisce l'[AudioStream] associato a un clip." @@ -13683,6 +19056,20 @@ msgstr "" "Restituisce la posizione del tempo di destinazione per una transizione (vedi " "[method add_transition])." +msgid "" +"Returns [code]true[/code] if a given transition exists (was added via [method " +"add_transition])." +msgstr "" +"Restituisce [code]true[/code] se esiste una determinata transizione (che è " +"stata aggiunta tramite [method add_transition])." + +msgid "" +"Return whether a transition uses the [i]hold previous[/i] functionality (see " +"[method add_transition])." +msgstr "" +"Restituisce se una transizione utilizza la funzionalità [i]mantieni " +"precedente[/i] (vedi [method add_transition])." + msgid "" "Return whether a transition uses the [i]filler clip[/i] functionality (see " "[method add_transition])." @@ -13821,6 +19208,21 @@ msgstr "Demo di registrazione del microfono" msgid "MP3 audio stream driver." msgstr "Driver di flusso audio MP3." +msgid "" +"MP3 audio stream driver. See [member data] if you want to load an MP3 file at " +"run-time.\n" +"[b]Note:[/b] This class can optionally support legacy MP1 and MP2 formats, " +"provided that the engine is compiled with the " +"[code]minimp3_extra_formats=yes[/code] SCons option. These extra formats are " +"not enabled by default." +msgstr "" +"Driver per i flusso audio MP3. Vedi [member data] se si desidera caricare un " +"file MP3 in fase di esecuzione.\n" +"[b]Nota:[/b] Questa classe può facoltativamente supportare i formati legacy " +"MP1 e MP2, a condizione che il motore sia compilato con l'opzione " +"[code]minimp3_extra_formats=yes[/code] SCons. Questi formati aggiuntivi non " +"sono abilitati come predefinito." + msgid "" "Contains the audio data in bytes.\n" "You can load a file without having to import it beforehand using the code " @@ -13898,6 +19300,20 @@ msgstr "" msgid "Runtime file loading and saving" msgstr "Caricamento e salvataggio di file a tempo di esecuzione" +msgid "" +"Creates a new [AudioStreamOggVorbis] instance from the given buffer. The " +"buffer must contain Ogg Vorbis data." +msgstr "" +"Crea una nuova istanza [AudioStreamOggVorbis] dal buffer fornito. Il buffer " +"deve contenere i dati in Ogg Vorbis." + +msgid "" +"Creates a new [AudioStreamOggVorbis] instance from the given file path. The " +"file must be in Ogg Vorbis format." +msgstr "" +"Crea una nuova istanza [AudioStreamOggVorbis] dal percorso di file fornito. " +"Il file deve essere in formato Ogg Vorbis." + msgid "" "If [code]true[/code], the audio will play again from the specified [member " "loop_offset] once it is done playing. Useful for ambient sounds and " @@ -14004,6 +19420,12 @@ msgstr "" "code]. I plugin dell'editor possono utilizzare questo metodo per \"taggare\" " "la posizione corrente lungo il flusso audio e visualizzarla in un'anteprima." +msgid "Returns the number of times the stream has looped." +msgstr "Restituisce il numero di volte che il flusso si è ripetuto." + +msgid "Returns the current position in the stream, in seconds." +msgstr "Restituisce la posizione attuale nel flusso, in secondi." + msgid "" "Returns the [AudioSamplePlayback] associated with this [AudioStreamPlayback] " "for playing back the audio sample of this stream." @@ -14011,6 +19433,27 @@ msgstr "" "Restituisce l'[AudioSamplePlayback] associato a questo [AudioStreamPlayback] " "per riprodurre il campione audio di questo flusso." +msgid "Returns [code]true[/code] if the stream is playing." +msgstr "Restituisce [code]true[/code] se il flusso è in riproduzione." + +msgid "" +"Mixes up to [param frames] of audio from the stream from the current " +"position, at a rate of [param rate_scale], advancing the stream.\n" +"Returns a [PackedVector2Array] where each element holds the left and right " +"channel volume levels of each frame.\n" +"[b]Note:[/b] Can return fewer frames than requested, make sure to use the " +"size of the return value." +msgstr "" +"Mixa fino a [param frames] frame di audio dal flusso dalla posizione attuale, " +"a una velocità di [param rate_scale], facendo avanzare il flusso.\n" +"Restituisce un [PackedVector2Array] in cui ogni elemento contiene i livelli " +"del volume del canale sinistro e destro di ogni frame.\n" +"[b]Nota:[/b] Può restituire meno frame di quelli richiesti, assicurati di " +"usare la dimensione del valore restituito." + +msgid "Seeks the stream at the given [param time], in seconds." +msgstr "Cerca il flusso al tempo [param time], in secondi." + msgid "" "Associates [AudioSamplePlayback] to this [AudioStreamPlayback] for playing " "back the audio sample of this stream." @@ -14018,9 +19461,47 @@ msgstr "" "Associa l'[AudioSamplePlayback] a questo [AudioStreamPlayback] per riprodurre " "il campione audio di questo flusso." +msgid "Starts the stream from the given [param from_pos], in seconds." +msgstr "Avvia il flusso dalla posizione [param from_position], in secondi." + +msgid "Stops the stream." +msgstr "Arresta il flusso." + msgid "Playback component of [AudioStreamInteractive]." msgstr "Componente di riproduzione di [AudioStreamInteractive]." +msgid "" +"Playback component of [AudioStreamInteractive]. Contains functions to change " +"the currently played clip." +msgstr "" +"Componente di riproduzione di [AudioStreamInteractive]. Contiene funzioni per " +"cambiare la clip attualmente riprodotta." + +msgid "" +"Return the index of the currently playing clip. You can use this to get the " +"name of the currently playing clip with [method AudioStreamInteractive." +"get_clip_name].\n" +"[b]Example:[/b] Get the currently playing clip name from inside an " +"[AudioStreamPlayer] node.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var playing_clip_name = stream.get_clip_name(get_stream_playback()." +"get_current_clip_index())\n" +"[/gdscript]\n" +"[/codeblocks]" +msgstr "" +"Restituisce l'indice della clip attualmente in riproduzione. Puoi usarlo per " +"ottenere il nome della clip attualmente in riproduzione con [method " +"AudioStreamInteractive.get_clip_name].\n" +"[b]Esempio:[/b] Ottieni il nome della clip attualmente in riproduzione " +"dall'interno di un nodo [AudioStreamPlayer].\n" +"[codeblocks]\n" +"[gdscript]\n" +"var playing_clip_name = stream.get_clip_name(get_stream_playback()." +"get_current_clip_index())\n" +"[/gdscript]\n" +"[/codeblocks]" + msgid "Switch to a clip (by index)." msgstr "Passa a una clip (per indice)." @@ -14048,6 +19529,15 @@ msgstr "" "AudioStreamPlayer2D.get_stream_playback] o [method AudioStreamPlayer3D." "get_stream_playback]." +msgid "" +"Returns [code]true[/code] if the stream associated with the given integer ID " +"is still playing. Check [method play_stream] for information on when this ID " +"becomes invalid." +msgstr "" +"Restituisce [code]true[/code] se il flusso associato a l'ID intero fornito è " +"ancora in riproduzione. Consulta [method play_stream] per informazioni su " +"quando questo ID diventa non valido." + msgid "" "Play an [AudioStream] at a given offset, volume, pitch scale, playback type, " "and bus. Playback starts immediately.\n" @@ -14104,6 +19594,43 @@ msgstr "" msgid "A node for audio playback." msgstr "Un nodo per la riproduzione audio." +msgid "" +"The [AudioStreamPlayer] node plays an audio stream non-positionally. It is " +"ideal for user interfaces, menus, or background music.\n" +"To use this node, [member stream] needs to be set to a valid [AudioStream] " +"resource. Playing more than one sound at the same time is also supported, see " +"[member max_polyphony].\n" +"If you need to play audio at a specific position, use [AudioStreamPlayer2D] " +"or [AudioStreamPlayer3D] instead." +msgstr "" +"Il nodo [AudioStreamPlayer] riproduce un flusso audio in modo non " +"posizionale. È ideale per le interfacce utente, menu o musica di sottofondo.\n" +"Per utilizzare questo nodo, [member stream] deve essere impostato su una " +"risorsa [AudioStream] valida. È supportata anche la riproduzione di più suoni " +"alla volta, vedi [member max_polyphony].\n" +"Se è necessario riprodurre l'audio in una posizione specifica, usa invece " +"[AudioStreamPlayer2D] o [AudioStreamPlayer3D]." + +msgid "" +"Returns the position in the [AudioStream] of the latest sound, in seconds. " +"Returns [code]0.0[/code] if no sounds are playing.\n" +"[b]Note:[/b] The position is not always accurate, as the [AudioServer] does " +"not mix audio every processed frame. To get more accurate results, add " +"[method AudioServer.get_time_since_last_mix] to the returned position.\n" +"[b]Note:[/b] This method always returns [code]0.0[/code] if the [member " +"stream] is an [AudioStreamInteractive], since it can have multiple clips " +"playing at once." +msgstr "" +"Restituisce la posizione nell'[AudioStream] dell'ultimo suono, in secondi. " +"Restituisce [code]0.0[/code] se non è riprodotto alcun suono.\n" +"[b]Nota:[/b] La posizione non è sempre precisa, poiché [AudioServer] non mixa " +"l'audio in ogni frame di processo. Per ottenere risultati più accurati, " +"aggiungi [method AudioServer.get_time_since_last_mix] alla posizione " +"restituita.\n" +"[b]Nota:[/b] Questo metodo restituisce sempre [code]0.0[/code] se [member " +"stream] è un [AudioStreamInteractive], poiché può avere più clip in " +"riproduzione alla volta." + msgid "" "Returns the latest [AudioStreamPlayback] of this node, usually the most " "recently created by [method play]. If no sounds are playing, this method " @@ -14219,6 +19746,34 @@ msgstr "" "o si entra nell'albero, oppure quando questo nodo viene messo in pausa (vedi " "[member Node.process_mode])." +msgid "" +"Volume of sound, in decibels. This is an offset of the [member stream]'s " +"volume.\n" +"[b]Note:[/b] To convert between decibel and linear energy (like most volume " +"sliders do), use [member volume_linear], or [method @GlobalScope." +"db_to_linear] and [method @GlobalScope.linear_to_db]." +msgstr "" +"Volume del suono, in decibel. Questo è un offset del volume di [member " +"stream].\n" +"[b]Nota:[/b] Per convertire tra decibel ed energia lineare (come fanno la " +"maggior parte dei cursori del volume), usa [member volume_linear], o [method " +"@GlobalScope.db_to_linear] e [method @GlobalScope.linear_to_db]." + +msgid "" +"Volume of sound, as a linear value.\n" +"[b]Note:[/b] This member modifies [member volume_db] for convenience. The " +"returned value is equivalent to the result of [method @GlobalScope." +"db_to_linear] on [member volume_db]. Setting this member is equivalent to " +"setting [member volume_db] to the result of [method @GlobalScope." +"linear_to_db] on a value." +msgstr "" +"Volume del suono, come valore lineare.\n" +"[b]Nota:[/b] Questo membro modifica [member volume_db] per comodità. Il " +"valore restituito è equivalente al risultato di [method @GlobalScope." +"db_to_linear] su [member volume_db]. Impostare questo membro equivale a " +"impostare [member volume_db] sul risultato di [method @GlobalScope." +"linear_to_db] su un valore." + msgid "" "Emitted when a sound finishes playing without interruptions. This signal is " "[i]not[/i] emitted when calling [method stop], or when exiting the tree while " @@ -14380,6 +19935,24 @@ msgstr "" "Se [code]true[/code], la riproduzione è in pausa. È possibile riprenderla " "impostando [member stream_paused] su [code]false[/code]." +msgid "Base volume before attenuation, in decibels." +msgstr "Volume di base prima dell'attenuazione, in decibel." + +msgid "" +"Base volume before attenuation, as a linear value.\n" +"[b]Note:[/b] This member modifies [member volume_db] for convenience. The " +"returned value is equivalent to the result of [method @GlobalScope." +"db_to_linear] on [member volume_db]. Setting this member is equivalent to " +"setting [member volume_db] to the result of [method @GlobalScope." +"linear_to_db] on a value." +msgstr "" +"Volume di base prima dell'attenuazione, come valore lineare.\n" +"[b]Nota:[/b] Questo membro modifica [member volume_db] per comodità. Il " +"valore restituito è equivalente al risultato di [method @GlobalScope." +"db_to_linear] su [member volume_db]. Impostare questo membro equivale a " +"impostare [member volume_db] sul risultato di [method @GlobalScope." +"linear_to_db] su un valore." + msgid "Emitted when the audio stops playing." msgstr "Emesso al termine della riproduzione dell'audio." @@ -14551,6 +20124,21 @@ msgstr "" msgid "The base sound level before attenuation, in decibels." msgstr "Il livello sonoro di base prima dell'attenuazione, in decibel." +msgid "" +"The base sound level before attenuation, as a linear value.\n" +"[b]Note:[/b] This member modifies [member volume_db] for convenience. The " +"returned value is equivalent to the result of [method @GlobalScope." +"db_to_linear] on [member volume_db]. Setting this member is equivalent to " +"setting [member volume_db] to the result of [method @GlobalScope." +"linear_to_db] on a value." +msgstr "" +"Il livello sonoro di base prima dell'attenuazione, come valore lineare.\n" +"[b]Nota:[/b] Questo membro modifica [member volume_db] per comodità. Il " +"valore restituito è equivalente al risultato di [method @GlobalScope." +"db_to_linear] su [member volume_db]. Impostare questo membro equivale a " +"impostare [member volume_db] sul risultato di [method @GlobalScope." +"linear_to_db] su un valore." + msgid "Attenuation of loudness according to linear distance." msgstr "Attenuazione del volume in base alla distanza lineare." @@ -14768,6 +20356,17 @@ msgstr "" "Flusso che può essere dotato di flussi secondari, che verranno riprodotti in " "sintonia." +msgid "" +"This is a stream that can be fitted with sub-streams, which will be played in-" +"sync. The streams begin at exactly the same time when play is pressed, and " +"will end when the last of them ends. If one of the sub-streams loops, then " +"playback will continue." +msgstr "" +"Questo è un flusso che può essere dotato di sotto-flussi, i quali saranno " +"riprodotti in sincronia. I flussi cominciano esattamente allo stesso momento " +"quando si preme play, e termineranno quando termina l'ultimo di essi. Se uno " +"dei sotto-flussi va in ripetizione, la riproduzione continuerà." + msgid "Get one of the synchronized streams, by index." msgstr "Ottiene uno dei flussi sincronizzati, per indice." @@ -14806,9 +20405,107 @@ msgstr "" "generati dinamicamente. Vedi anche [AudioStreamGenerator] per la generazione " "di audio procedurale." +msgid "" +"Creates a new [AudioStreamWAV] instance from the given buffer. The buffer " +"must contain WAV data.\n" +"The keys and values of [param options] match the properties of " +"[ResourceImporterWAV]. The usage of [param options] is identical to [method " +"AudioStreamWAV.load_from_file]." +msgstr "" +"Crea una nuova istanza di [AudioStreamWAV] dal buffer specificato. Il buffer " +"deve contenere dati WAV.\n" +"Le chiavi e i valori di [param options] corrispondono alle proprietà di " +"[ResourceImporterWAV]. L'utilizzo di [param options] è identico a [method " +"AudioStreamWAV.load_from_file]." + +msgid "" +"Creates a new [AudioStreamWAV] instance from the given file path. The file " +"must be in WAV format.\n" +"The keys and values of [param options] match the properties of " +"[ResourceImporterWAV].\n" +"[b]Example:[/b] Load the first file dropped as a WAV and play it:\n" +"[codeblock]\n" +"@onready var audio_player = $AudioStreamPlayer\n" +"\n" +"func _ready():\n" +" get_window().files_dropped.connect(_on_files_dropped)\n" +"\n" +"func _on_files_dropped(files):\n" +" if files[0].get_extension() == \"wav\":\n" +" audio_player.stream = AudioStreamWAV.load_from_file(files[0], {\n" +" \"force/max_rate\": true,\n" +" \"force/max_rate_hz\": 11025\n" +" })\n" +" audio_player.play()\n" +"[/codeblock]" +msgstr "" +"Crea una nuova istanza [AudioStreamWAV] dal percorso file specificato. Il " +"file deve essere in formato WAV.\n" +"Le chiavi e i valori di [param options] corrispondono alle proprietà di " +"[ResourceImporterWAV].\n" +"[b]Esempio:[/b] Carica il primo file trascinato come WAV e riproducilo:\n" +"[codeblock]\n" +"@onready var audio_player = $AudioStreamPlayer\n" +"\n" +"func _ready():\n" +" get_window().files_dropped.connect(_on_files_dropped)\n" +"\n" +"func _on_files_dropped(files):\n" +" if files[0].get_extension() == \"wav\":\n" +" audio_player.stream = AudioStreamWAV.load_from_file(files[0], {\n" +" \"force/max_rate\": true,\n" +" \"force/max_rate_hz\": 11025\n" +" })\n" +" audio_player.play()\n" +"[/codeblock]" + +msgid "" +"Saves the AudioStreamWAV as a WAV file to [param path]. Samples with IMA " +"ADPCM or Quite OK Audio formats can't be saved.\n" +"[b]Note:[/b] A [code].wav[/code] extension is automatically appended to " +"[param path] if it is missing." +msgstr "" +"Salva l'AudioStreamWAV come file WAV al percorso [param path]. I campioni con " +"formati IMA ADPCM o Quite OK Audio non possono essere salvati.\n" +"[b]Nota:[/b] Un'estensione [code].wav[/code] viene automaticamente aggiunta a " +"[param path] se manca." + +msgid "" +"Contains the audio data in bytes.\n" +"[b]Note:[/b] If [member format] is set to [constant FORMAT_8_BITS], this " +"property expects signed 8-bit PCM data. To convert from unsigned 8-bit PCM, " +"subtract 128 from each byte.\n" +"[b]Note:[/b] If [member format] is set to [constant FORMAT_QOA], this " +"property expects data from a full QOA file." +msgstr "" +"Contiene i dati audio in byte.\n" +"[b]Nota:[/b] Se [member format] è impostato su [constant FORMAT_8_BITS], " +"questa proprietà si aspetta dati PCM a 8 bit con segno. Per convertire da PCM " +"a 8 bit senza segno, sottrai 128 da ogni byte.\n" +"[b]Nota:[/b] Se [member format] è impostato su [constant FORMAT_QOA], questa " +"proprietà si aspetta dati da un file QOA completo." + msgid "Audio format. See [enum Format] constants for values." msgstr "Il formato audio. Vedi le costanti di [enum Format] per i valori." +msgid "" +"The loop start point (in number of samples, relative to the beginning of the " +"stream)." +msgstr "" +"Il punto iniziale del loop (in numero di campioni, relativo all'inizio del " +"flusso)." + +msgid "" +"The loop end point (in number of samples, relative to the beginning of the " +"stream)." +msgstr "" +"Il punto finale del loop (in numero di campioni, relativo all'inizio del " +"flusso)." + +msgid "The loop mode. See [enum LoopMode] constants for values." +msgstr "" +"La modalità di ripetizione. Vedi le costanti di [enum LoopMode] per i valori." + msgid "" "The sample rate for mixing this audio. Higher values require more storage " "space, but result in better quality.\n" @@ -14841,6 +20538,22 @@ msgstr "" msgid "If [code]true[/code], audio is stereo." msgstr "Se [code]true[/code], l'audio è stereo." +msgid "8-bit PCM audio codec." +msgstr "Codec di audio PCM a 8 bit." + +msgid "16-bit PCM audio codec." +msgstr "Codec di audio PCM a 16 bit." + +msgid "Audio is lossily compressed as IMA ADPCM." +msgstr "L'audio è compresso con perdita di dati come IMA ADPCM." + +msgid "" +"Audio is lossily compressed as [url=https://qoaformat.org/]Quite OK Audio[/" +"url]." +msgstr "" +"L'audio è compresso con perdita di dati come ([url=https://qoaformat." +"org/]Quite OK Audio[/url])." + msgid "Audio does not loop." msgstr "L'audio non si ripete." @@ -15004,6 +20717,21 @@ msgstr "" "Per consentire sia il clic sinistro che quello destro, usa " "[code]MOUSE_BUTTON_MASK_LEFT | MOUSE_BUTTON_MASK_RIGHT[/code]." +msgid "" +"If [code]true[/code], the button's state is pressed. Means the button is " +"pressed down or toggled (if [member toggle_mode] is active). Only works if " +"[member toggle_mode] is [code]true[/code].\n" +"[b]Note:[/b] Changing the value of [member button_pressed] will result in " +"[signal toggled] to be emitted. If you want to change the pressed state " +"without emitting that signal, use [method set_pressed_no_signal]." +msgstr "" +"Se [code]true[/code], lo stato del pulsante è premuto. Significa che il " +"pulsante è premuto o commutato (se [member toggle_mode] è attivo). Funziona " +"solo se [member toggle_mode] è [code]true[/code].\n" +"[b]Nota:[/b] Cambiando il valore di [member button_pressed] verrà emesso " +"[signal toggled]. Se si desidera cambiare lo stato di pressione senza " +"emettere quel segnale, usa [method set_pressed_no_signal]." + msgid "" "If [code]true[/code], the button is in disabled state and can't be clicked or " "toggled." @@ -15038,6 +20766,17 @@ msgstr "" "[member toggle_mode] è [code]false[/code], la scorciatoia si attiverà senza " "alcun feedback visivo." +msgid "" +"If [code]true[/code], the button will add information about its shortcut in " +"the tooltip.\n" +"[b]Note:[/b] This property does nothing when the tooltip control is " +"customized using [method Control._make_custom_tooltip]." +msgstr "" +"Se [code]true[/code], il pulsante aggiungerà informazioni sulla sua " +"scorciatoia nel tooltip.\n" +"[b]Nota:[/b] Questa proprietà non fa nulla quando il controllo del tooltip " +"viene personalizzato attraverso [method Control._make_custom_tooltip]." + msgid "" "If [code]true[/code], the button is in toggle mode. Makes the button flip " "state between pressed and unpressed each time its area is clicked." @@ -15262,6 +21001,27 @@ msgstr "" "alfa di [member anisotropy_flowmap] se lì è definita una texture e la texture " "contiene un canale alfa." +msgid "" +"If [code]true[/code], anisotropy is enabled. Anisotropy changes the shape of " +"the specular blob and aligns it to tangent space. This is useful for brushed " +"aluminum and hair reflections.\n" +"[b]Note:[/b] Mesh tangents are needed for anisotropy to work. If the mesh " +"does not contain tangents, the anisotropy effect will appear broken.\n" +"[b]Note:[/b] Material anisotropy should not to be confused with anisotropic " +"texture filtering, which can be enabled by setting [member texture_filter] to " +"[constant TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC]." +msgstr "" +"Se [code]true[/code], l'anisotropia è abilitata. L'anisotropia cambia la " +"forma della massa speculare e la allinea allo spazio tangente. Questo è utile " +"per i riflessi di alluminio lucidato e dei capelli.\n" +"[b]Nota:[/b] Le tangenti delle mesh sono necessarie affinché l'anisotropia " +"funzioni. Se la mesh non contiene tangenti, l'effetto anisotropico apparirà " +"fratturato.\n" +"[b]Nota:[/b] L'anisotropia del materiale non deve essere confusa con il " +"filtro anisotropico delle texture, il quale può essere abilitato impostando " +"[member texture_filter] su [constant " +"TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC]." + msgid "" "Texture that offsets the tangent map for anisotropy calculations and " "optionally controls the anisotropy effect (if an alpha channel is present). " @@ -15367,6 +21127,20 @@ msgstr "" "Altrimenti la scala si perderà durante il billboarding. Si applica solo " "quando [member billboard_mode] non è [constant BILLBOARD_DISABLED]." +msgid "" +"Controls how the object faces the camera. See [enum BillboardMode].\n" +"[b]Note:[/b] Billboard mode is not suitable for VR because the left-right " +"vector of the camera is not horizontal when the screen is attached to your " +"head instead of on the table. See [url=https://github.com/godotengine/godot/" +"issues/41567]GitHub issue #41567[/url] for details." +msgstr "" +"Controlla il modo in cui l'oggetto è rivolto verso la telecamera. Vedi [enum " +"BillboardMode].\n" +"[b]Nota:[/b] La modalità billboard non è adatta per il VR perché il vettore " +"di sinistra-destra della telecamera non è orizzontale quando lo schermo è " +"fissato alla testa anziché sul tavolo. Vedi [url=https://github.com/" +"godotengine/godot/issues/41567]Problema su GitHub #41567[/url] per i dettagli." + msgid "" "The material's blend mode.\n" "[b]Note:[/b] Values other than [code]Mix[/code] force the object into the " @@ -15430,6 +21204,20 @@ msgstr "" "Determina quando avviene il rendering della profondità. Vedi [enum " "DepthDrawMode]. Vedi anche [member transparency]." +msgid "" +"Texture that specifies the color of the detail overlay. [member " +"detail_albedo]'s alpha channel is used as a mask, even when the material is " +"opaque. To use a dedicated texture as a mask, see [member detail_mask].\n" +"[b]Note:[/b] [member detail_albedo] is [i]not[/i] modulated by [member " +"albedo_color]." +msgstr "" +"Texture che specifica il colore della sovrapposizione del dettaglio. Il " +"canale alfa di [member detail_albedo] è utilizzato come maschera, anche " +"quando il materiale è opaco. Per utilizzare una texture dedicata come " +"maschera, vedi [member detail_mask].\n" +"[b]Nota:[/b] [member detail_albedo] [i]non[/i] è modulato da [member " +"albedo_color]." + msgid "" "Specifies how the [member detail_albedo] should blend with the current " "[code]ALBEDO[/code]. See [enum BlendMode] for options." @@ -15437,6 +21225,18 @@ msgstr "" "Specifica come il [member detail_albedo] dovrebbe fondersi con l'attuale " "[code]ALBEDO[/code]. Vedi [enum BlendMode] per le opzioni." +msgid "" +"If [code]true[/code], enables the detail overlay. Detail is a second texture " +"that gets mixed over the surface of the object based on [member detail_mask] " +"and [member detail_albedo]'s alpha channel. This can be used to add variation " +"to objects, or to blend between two different albedo/normal textures." +msgstr "" +"Se [code]true[/code], abilita la sovrapposizione del dettaglio. Il dettaglio " +"è una seconda texture che viene mescolata sulla superficie dell'oggetto in " +"base al canale alfa di [member detail_mask] e di [member detail_albedo]. Può " +"essere utilizzato per aggiungere variazione agli oggetti o per fondere due " +"diverse texture albedo o normali." + msgid "" "Texture used to specify how the detail textures get blended with the base " "textures. [member detail_mask] can be used together with [member " @@ -15446,6 +21246,27 @@ msgstr "" "con le texture di base. [member detail_mask] può essere utilizzato insieme al " "canale alfa di [member detail_albedo] (se presente)." +msgid "" +"Texture that specifies the per-pixel normal of the detail overlay. The " +"[member detail_normal] texture only uses the red and green channels; the blue " +"and alpha channels are ignored. The normal read from [member detail_normal] " +"is oriented around the surface normal provided by the [Mesh].\n" +"[b]Note:[/b] Godot expects the normal map to use X+, Y+, and Z+ coordinates. " +"See [url=http://wiki.polycount.com/wiki/" +"Normal_Map_Technical_Details#Common_Swizzle_Coordinates]this page[/url] for a " +"comparison of normal map coordinates expected by popular engines." +msgstr "" +"Texture che specifica il normale per ogni pixel della sovrapposizione del " +"dettaglio. La texture [member detail_normal] utilizza solo i canali rosso e " +"verde; i canali blu e alfa sono ignorati. La lettura dei normali da [member " +"detail_normal] è orientata attorno al normale della superficie fornita da " +"[Mesh].\n" +"[b]Nota:[/b] Godot prevede che la mappa normale utilizzi le coordinate X+, " +"Y+, e Z+. Vedi [url=http://wiki.polycount.com/wiki/" +"Normal_Map_Technical_Details#Common_Swizzle_Coordinates]questa pagina[/url] " +"per un confronto delle coordinate della mappa normale previste dai motori più " +"diffusi." + msgid "" "Specifies whether to use [code]UV[/code] or [code]UV2[/code] for the detail " "layer. See [enum DetailUV] for options." @@ -15564,6 +21385,29 @@ msgstr "" "Se [code]true[/code], l'oggetto è renderizzato con le stesse dimensioni a " "prescindere dalla distanza." +msgid "" +"If [code]true[/code], enables the vertex grow setting. This can be used to " +"create mesh-based outlines using a second material pass and its [member " +"cull_mode] set to [constant CULL_FRONT]. See also [member grow_amount].\n" +"[b]Note:[/b] Vertex growth cannot create new vertices, which means that " +"visible gaps may occur in sharp corners. This can be alleviated by designing " +"the mesh to use smooth normals exclusively using [url=http://wiki.polycount." +"com/wiki/Face_weighted_normals]face weighted normals[/url] in the 3D " +"authoring software. In this case, grow will be able to join every outline " +"together, just like in the original mesh." +msgstr "" +"Se [code]true[/code], abilita l'impostazione di crescita dei vertici. Questo " +"può essere usato per creare contorni basati su mesh attraverso un secondo " +"passaggio di materiale e il suo [member cull_mode] impostato su [constant " +"CULL_FRONT]. Vedi anche [member grow_amount].\n" +"[b]Nota:[/b] La crescita dei vertici non può creare nuovi vertici, il che " +"significa che potrebbero verificarsi fratture visibili negli angoli acuti. " +"Questo può essere alleviato progettando la mesh in modo che usi normali " +"uniformi attraverso esclusivamente [url=https://wiki.polycount.com/wiki/" +"Face_weighted_normals]face weighted normals[/url] nel software di " +"modellazione 3D. In questo caso, la crescita sarà in grado di unire tutti i " +"contorni insieme, proprio come nella mesh originale." + msgid "" "Grows object vertices in the direction of their normals. Only effective if " "[member grow] is [code]true[/code]." @@ -15913,6 +21757,19 @@ msgstr "" "L'effetto di dissolvenza in prossimità sfuma ogni pixel in base alla sua " "distanza da un altro oggetto." +msgid "" +"If [code]true[/code], the refraction effect is enabled. Distorts transparency " +"based on light from behind the object.\n" +"[b]Note:[/b] Refraction is implemented using the screen texture. Only opaque " +"materials will appear in the refraction, since transparent materials do not " +"appear in the screen texture." +msgstr "" +"Se [code]true[/code], l'effetto rifrazione è abilitato. Distorce la " +"trasparenza in base alla luce proveniente da dietro l'oggetto.\n" +"[b]Nota:[/b] La rifrazione è implementata utilizzando la texture dello " +"schermo. Nella rifrazione appariranno solo materiali opachi, poiché i " +"materiali trasparenti non appaiono nella texture dello schermo." + msgid "The strength of the refraction effect." msgstr "L'intensità dell'effetto di rifrazione." @@ -15996,6 +21853,18 @@ msgstr "" "nel canale rosso, la ruvidità nel blu e l'occlusione ambientale nel verde, " "potresti ridurre il numero di texture utilizzate." +msgid "" +"Sets whether the shading takes place, per-pixel, per-vertex or unshaded. Per-" +"vertex lighting is faster, making it the best choice for mobile applications, " +"however it looks considerably worse than per-pixel. Unshaded rendering is the " +"fastest, but disables all interactions with lights." +msgstr "" +"Imposta se l'ombreggiatura avviene per pixel, per vertice o senza " +"ombreggiatura. L'illuminazione per vertice è più veloce, rendendola la scelta " +"migliore per le applicazioni sui dispositivi mobili, tuttavia ha un aspetto " +"notevolmente peggiore di quella per pixel. Il rendering senza ombreggiatura è " +"il più veloce, ma disabilita tutte le interazioni con le luci." + msgid "" "If [code]true[/code], enables the \"shadow to opacity\" render mode where " "lighting modifies the alpha so shadowed areas are opaque and non-shadowed " @@ -16305,6 +22174,9 @@ msgstr "" msgid "Texture specifying per-pixel detail color." msgstr "Texture che specifica il colore dei dettagli per pixel." +msgid "Texture specifying per-pixel detail normal." +msgstr "Texture che specifica le normali del dettaglio per ogni pixel." + msgid "Texture holding ambient occlusion, roughness, and metallic." msgstr "" "Texture che contiene i valori dell'occlusione ambientale, la ruvidità, e il " @@ -16468,6 +22340,13 @@ msgstr "" "L'oggetto sarà ombreggiato per pixel. Utile per effetti di ombreggiatura " "realistici." +msgid "" +"The object will be shaded per vertex. Useful when you want cheaper shaders " +"and do not care about visual quality." +msgstr "" +"L'oggetto sarà ombreggiato per vertice. Utile quando si desiderano shader " +"meno costosi e la qualità visiva non importa." + msgid "Represents the size of the [enum ShadingMode] enum." msgstr "Rappresenta la dimensione dell'enumerazione [enum ShadingMode]." @@ -16875,6 +22754,74 @@ msgstr "" msgid "A 3×3 matrix for representing 3D rotation and scale." msgstr "Una matrice 3×3 per rappresentare la rotazione e la scala 3D." +msgid "" +"The [Basis] built-in [Variant] type is a 3×3 [url=https://en.wikipedia.org/" +"wiki/Matrix_(mathematics)]matrix[/url] used to represent 3D rotation, scale, " +"and shear. It is frequently used within a [Transform3D].\n" +"A [Basis] is composed by 3 axis vectors, each representing a column of the " +"matrix: [member x], [member y], and [member z]. The length of each axis " +"([method Vector3.length]) influences the basis's scale, while the direction " +"of all axes influence the rotation. Usually, these axes are perpendicular to " +"one another. However, when you rotate any axis individually, the basis " +"becomes sheared. Applying a sheared basis to a 3D model will make the model " +"appear distorted.\n" +"A [Basis] is:\n" +"- [b]Orthogonal[/b] if its axes are perpendicular to each other.\n" +"- [b]Normalized[/b] if the length of every axis is [code]1.0[/code].\n" +"- [b]Uniform[/b] if all axes share the same length (see [method get_scale]).\n" +"- [b]Orthonormal[/b] if it is both orthogonal and normalized, which allows it " +"to only represent rotations (see [method orthonormalized]).\n" +"- [b]Conformal[/b] if it is both orthogonal and uniform, which ensures it is " +"not distorted.\n" +"For a general introduction, see the [url=$DOCS_URL/tutorials/math/" +"matrices_and_transforms.html]Matrices and transforms[/url] tutorial.\n" +"[b]Note:[/b] Godot uses a [url=https://en.wikipedia.org/wiki/Right-" +"hand_rule]right-handed coordinate system[/url], which is a common standard. " +"For directions, the convention for built-in types like [Camera3D] is for -Z " +"to point forward (+X is right, +Y is up, and +Z is back). Other objects may " +"use different direction conventions. For more information, see the " +"[url=$DOCS_URL/tutorials/assets_pipeline/importing_3d_scenes/" +"model_export_considerations.html#d-asset-direction-conventions]3D asset " +"direction conventions[/url] tutorial.\n" +"[b]Note:[/b] The basis matrices are exposed as [url=https://www.mindcontrol." +"org/~hplus/graphics/matrix-layout.html]column-major[/url] order, which is the " +"same as OpenGL. However, they are stored internally in row-major order, which " +"is the same as DirectX." +msgstr "" +"Il tipo di [Variant] integrato [Basis] è una [url=https://it.wikipedia.org/" +"wiki/Matrice]matrice[/url] 3×3 utilizzata per rappresentare rotazione, scala " +"e taglio. Viene spesso utilizzato all'interno di un [Transform3D].\n" +"Una base è composta da 3 vettori di assi, ciascuno dei quali rappresenta una " +"colonna della matrice: [member x], [member y] e [member z]. La lunghezza di " +"ciascun asse ([method Vector3.length]) influenza la scala della base, mentre " +"la direzione di tutti gli assi influenza la rotazione. Di solito questi assi " +"sono perpendicolari tra loro. Tuttavia, quando si ruota un asse " +"individualmente, la base diventa inclinata. L'applicazione di una base " +"inclinata a un modello 3D farà apparire il modello distorto.\n" +"Una base è:\n" +"- [b]Ortogonale[/b] se i suoi assi sono perpendicolari tra loro. \n" +"- [b]Normalizzata[/b] se la lunghezza di ogni asse è [code]1.0[/code].\n" +"- [b]Uniforme[/b] se tutti gli assi condividono la stessa lunghezza (vedi " +"[method get_scale]).\n" +"- [b]Ortonormale[/b] se è sia ortogonale che normalizzata, il che le consente " +"di rappresentare solo rotazioni. (vedi [method orthonormalized]).\n" +"- [b]Conforme[/b] se è sia ortogonale che uniforme, il che garantisce che non " +"sia distorta.\n" +"Per un'introduzione generale, consulta il tutorial [url=$DOCS_URL/tutorials/" +"math/matrices_and_transforms.html]Matrici e trasformazioni[/url].\n" +"[b]Nota:[/b] Godot utilizza un [url=https://it.wikipedia.org/wiki/" +"Regola_della_mano_destra]sistema di coordinate destrorso[/url], che è uno " +"standard comune. Per le direzioni, la convenzione per i tipi integrati come " +"[Camera3D] prevede che -Z punti in avanti (+X è destra, +Y è su e +Z è " +"indietro). Altri oggetti possono utilizzare convenzioni di direzione diverse. " +"Per ulteriori informazioni, consulta il tutorial [url=$DOCS_URL/tutorials/" +"assets_pipeline/importing_3d_scenes/model_export_considerations.html#d-asset-" +"direction-conventions]Convenzioni sulla direzione delle risorse 3D[/url].\n" +"[b]Nota:[/b] Le matrici di base sono esposte come ordine di [url=https://www." +"mindcontrol.org/~hplus/graphics/matrix-layout.html]colonna prima[/url], che è " +"lo stesso di OpenGL. Tuttavia, sono memorizzati internamente in ordine di " +"riga prima, che è lo stesso di DirectX." + msgid "Matrices and transforms" msgstr "Le matrici e le trasformazioni" @@ -16887,6 +22834,15 @@ msgstr "Demo di trasformazione di matrice" msgid "2.5D Game Demo" msgstr "Demo di gioco 2.5D" +msgid "" +"Constructs a [Basis] identical to [constant IDENTITY].\n" +"[b]Note:[/b] In C#, this constructs a [Basis] with all of its components set " +"to [constant Vector3.ZERO]." +msgstr "" +"Costruisce una [Basis] identica a [constant IDENTITY].\n" +"[b]Nota:[/b] In C#, costruisce una [Basis] con tutti i suoi componenti " +"impostati su [constant Vector3.ZERO]." + msgid "Constructs a [Basis] as a copy of the given [Basis]." msgstr "Costruisce un [Basis] come copia del [Basis] specificato." @@ -16922,7 +22878,253 @@ msgid "" "matrix." msgstr "" "Costruisce un [Basis] da 3 vettori assi. Queste sono le colonne della matrice " -"della base." +"base." + +msgid "" +"Returns the [url=https://en.wikipedia.org/wiki/Determinant]determinant[/url] " +"of this basis's matrix. For advanced math, this number can be used to " +"determine a few attributes:\n" +"- If the determinant is exactly [code]0.0[/code], the basis is not invertible " +"(see [method inverse]).\n" +"- If the determinant is a negative number, the basis represents a negative " +"scale.\n" +"[b]Note:[/b] If the basis's scale is the same for every axis, its determinant " +"is always that scale by the power of 2." +msgstr "" +"Restituisce il [url=https://it.wikipedia.org/wiki/" +"Determinante_(algebra)]determinante[/url] della matrice di questa base. Per " +"la matematica avanzata, questo numero può essere usato per determinare alcuni " +"attributi:\n" +"- Se il determinante è esattamente [code]0.0[/code], la base non è " +"invertibile (vedi [method inverse]).\n" +"- Se il determinante è un numero negativo, la base rappresenta una scala " +"negativa.\n" +"[b]Nota:[/b] Se la scala della base è la stessa per ogni asse, il suo " +"determinante è sempre quella scala elevata alla potenza di 2." + +msgid "" +"Constructs a new [Basis] that only represents rotation from the given " +"[Vector3] of [url=https://en.wikipedia.org/wiki/Euler_angles]Euler angles[/" +"url], in radians.\n" +"- The [member Vector3.x] should contain the angle around the [member x] axis " +"(pitch);\n" +"- The [member Vector3.y] should contain the angle around the [member y] axis " +"(yaw);\n" +"- The [member Vector3.z] should contain the angle around the [member z] axis " +"(roll).\n" +"[codeblocks]\n" +"[gdscript]\n" +"# Creates a Basis whose z axis points down.\n" +"var my_basis = Basis.from_euler(Vector3(TAU / 4, 0, 0))\n" +"\n" +"print(my_basis.z) # Prints (0.0, -1.0, 0.0)\n" +"[/gdscript]\n" +"[csharp]\n" +"// Creates a Basis whose z axis points down.\n" +"var myBasis = Basis.FromEuler(new Vector3(Mathf.Tau / 4.0f, 0.0f, 0.0f));\n" +"\n" +"GD.Print(myBasis.Z); // Prints (0, -1, 0)\n" +"[/csharp]\n" +"[/codeblocks]\n" +"The order of each consecutive rotation can be changed with [param order] (see " +"[enum EulerOrder] constants). By default, the YXZ convention is used " +"([constant EULER_ORDER_YXZ]): the basis rotates first around the Y axis " +"(yaw), then X (pitch), and lastly Z (roll). When using the opposite method " +"[method get_euler], this order is reversed." +msgstr "" +"Costruisce una nuova [Basis] che rappresenta solo la rotazione dal [Vector3] " +"fornito di [url=https://it.wikipedia.org/wiki/Angoli_di_Eulero]angoli di " +"Eulero[/url], in radianti.\n" +"- Il [member Vector3.x] dovrebbe contenere l'angolo attorno all'asse [member " +"x] (beccheggio).\n" +"- Il [member Vector3.y] dovrebbe contenere l'angolo attorno all'asse [member " +"y] (imbardata).\n" +"- Il [member Vector3.z] dovrebbe contenere l'angolo attorno all'asse [member " +"z] (rollio).\n" +"[codeblocks]\n" +"[gdscript]\n" +"# Crea una base il cui asse z punta verso il basso.\n" +"var my_basis = Basis.from_euler(Vector3(TAU / 4, 0, 0))\n" +"\n" +"print(my_basis.z) # Stampa (0.0, -1.0, 0.0).\n" +"[/gdscript]\n" +"[csharp]\n" +"// Crea una base il cui asse z punta verso il basso.\n" +"var myBasis = Basis.FromEuler(new Vector3(Mathf.Tau / 4.0f, 0.0f, 0.0f));\n" +"\n" +"GD.Print(myBasis.Z); // Stampa (0, -1, 0).\n" +"[/csharp]\n" +"[/codeblocks]\n" +"L'ordine di ogni rotazione consecutiva può essere modificato con [param " +"order] (vedi le costanti di [enum EulerOrder]). Come predefinito, è usata la " +"convenzione YXZ ([constant EULER_ORDER_YXZ]): la base ruota prima attorno " +"all'asse Y (imbardata), poi X (beccheggio) e infine Z (rollio). Quando si " +"utilizza il metodo opposto [method get_euler], questo ordine è invertito." + +msgid "" +"Constructs a new [Basis] that only represents scale, with no rotation or " +"shear, from the given [param scale] vector.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var my_basis = Basis.from_scale(Vector3(2, 4, 8))\n" +"\n" +"print(my_basis.x) # Prints (2.0, 0.0, 0.0)\n" +"print(my_basis.y) # Prints (0.0, 4.0, 0.0)\n" +"print(my_basis.z) # Prints (0.0, 0.0, 8.0)\n" +"[/gdscript]\n" +"[csharp]\n" +"var myBasis = Basis.FromScale(new Vector3(2.0f, 4.0f, 8.0f));\n" +"\n" +"GD.Print(myBasis.X); // Prints (2, 0, 0)\n" +"GD.Print(myBasis.Y); // Prints (0, 4, 0)\n" +"GD.Print(myBasis.Z); // Prints (0, 0, 8)\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] In linear algebra, the matrix of this basis is also known as a " +"[url=https://en.wikipedia.org/wiki/Diagonal_matrix]diagonal matrix[/url]." +msgstr "" +"Costruisce una nuova [Basis] che rappresenta solo la scala, senza rotazione o " +"inclinazione, dal vettore [param scale] specificato.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var my_basis = Basis.from_scale(Vector3(2, 4, 8))\n" +"\n" +"print(my_basis.x) # Stampa (2.0, 0.0, 0.0).\n" +"print(my_basis.y) # Stampa (0.0, 4.0, 0.0).\n" +"print(my_basis.z) # Stampa (0.0, 0.0, 8.0).\n" +"[/gdscript]\n" +"[csharp]\n" +"var myBasis = Basis.FromScale(new Vector3(2.0f, 4.0f, 8.0f));\n" +"\n" +"GD.Print(myBasis.X); // Stampa (2, 0, 0).\n" +"GD.Print(myBasis.Y); // Stampa (0, 4, 0).\n" +"GD.Print(myBasis.Z); // Stampa (0, 0, 8).\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Nota:[/b] Nell'algebra lineare, la matrice di questa base è anche " +"conosciuta come [url=https://it.wikipedia.org/wiki/Matrice_diagonale]matrice " +"diagonale[/url]." + +msgid "" +"Returns this basis's rotation as a [Vector3] of [url=https://en.wikipedia.org/" +"wiki/Euler_angles]Euler angles[/url], in radians. For the returned value:\n" +"- The [member Vector3.x] contains the angle around the [member x] axis " +"(pitch);\n" +"- The [member Vector3.y] contains the angle around the [member y] axis " +"(yaw);\n" +"- The [member Vector3.z] contains the angle around the [member z] axis " +"(roll).\n" +"The order of each consecutive rotation can be changed with [param order] (see " +"[enum EulerOrder] constants). By default, the YXZ convention is used " +"([constant EULER_ORDER_YXZ]): Z (roll) is calculated first, then X (pitch), " +"and lastly Y (yaw). When using the opposite method [method from_euler], this " +"order is reversed.\n" +"[b]Note:[/b] For this method to return correctly, the basis needs to be " +"[i]orthonormal[/i] (see [method orthonormalized]).\n" +"[b]Note:[/b] Euler angles are much more intuitive but are not suitable for 3D " +"math. Because of this, consider using the [method get_rotation_quaternion] " +"method instead, which returns a [Quaternion].\n" +"[b]Note:[/b] In the Inspector dock, a basis's rotation is often displayed in " +"Euler angles (in degrees), as is the case with the [member Node3D.rotation] " +"property." +msgstr "" +"Restituisce la rotazione di questa base come un [Vector3] di [url=https://it." +"wikipedia.org/wiki/Angoli_di_Eulero]angoli di Eulero[/url], in radianti. Per " +"il valore restituito:\n" +"- [member Vector3.x] contiene l'angolo attorno all'asse [member x] " +"(beccheggio);\n" +"- [member Vector3.y] contiene l'angolo attorno all'asse [member y] " +"(imbardata);\n" +"- [member Vector3.z] contiene l'angolo attorno all'asse [member z] (rollio).\n" +"L'ordine di ogni rotazione consecutiva può essere modificato con [param " +"order] (vedi le costanti di [enum EulerOrder]). Come predefinito, è usata la " +"convenzione YXZ ([constant EULER_ORDER_YXZ]): viene calcolato prima Z " +"(rollio), poi X (beccheggio) e infine Y (imbardata). Quando si utilizza il " +"metodo opposto [method from_euler], questo ordine viene invertito.\n" +"[b]Nota:[/b] Affinché questo metodo restituisca correttamente, la base deve " +"essere [i]ortonormale[/i] (vedi [method orthonormalized]).\n" +"[b]Nota:[/b] Gli angoli di Eulero sono molto più intuitivi ma non sono adatti " +"per la matematica 3D. Per questo motivo, considera invece usare il metodo " +"[method get_rotation_quaternion], che restituisce un [Quaternion].\n" +"[b]Nota:[/b] Nel pannello dell'Ispettore, la rotazione di una base è spesso " +"visualizzata in angoli di Eulero (in gradi), come nel caso della proprietà " +"[member Node3D.rotation]." + +msgid "" +"Returns this basis's rotation as a [Quaternion].\n" +"[b]Note:[/b] Quaternions are much more suitable for 3D math but are less " +"intuitive. For user interfaces, consider using the [method get_euler] method, " +"which returns Euler angles." +msgstr "" +"Restituisce la rotazione di questa base come [Quaternion].\n" +"[b]Nota:[/b] I quaternioni sono molto più adatti alla matematica 3D ma sono " +"meno intuitivi. Per le interfacce utente, considera l'utilizzo del metodo " +"[method get_euler], che restituisce angoli di Eulero." + +msgid "" +"Returns the length of each axis of this basis, as a [Vector3]. If the basis " +"is not sheared, this value is the scaling factor. It is not affected by " +"rotation.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var my_basis = Basis(\n" +" Vector3(2, 0, 0),\n" +" Vector3(0, 4, 0),\n" +" Vector3(0, 0, 8)\n" +")\n" +"# Rotating the Basis in any way preserves its scale.\n" +"my_basis = my_basis.rotated(Vector3.UP, TAU / 2)\n" +"my_basis = my_basis.rotated(Vector3.RIGHT, TAU / 4)\n" +"\n" +"print(my_basis.get_scale()) # Prints (2.0, 4.0, 8.0)\n" +"[/gdscript]\n" +"[csharp]\n" +"var myBasis = new Basis(\n" +" Vector3(2.0f, 0.0f, 0.0f),\n" +" Vector3(0.0f, 4.0f, 0.0f),\n" +" Vector3(0.0f, 0.0f, 8.0f)\n" +");\n" +"// Rotating the Basis in any way preserves its scale.\n" +"myBasis = myBasis.Rotated(Vector3.Up, Mathf.Tau / 2.0f);\n" +"myBasis = myBasis.Rotated(Vector3.Right, Mathf.Tau / 4.0f);\n" +"\n" +"GD.Print(myBasis.Scale); // Prints (2, 4, 8)\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] If the value returned by [method determinant] is negative, the " +"scale is also negative." +msgstr "" +"Restituisce la lunghezza di ogni asse di questa base, come [Vector3]. Se la " +"base non è inclinata, questo è il fattore di scala. Non è influenzato dalla " +"rotazione.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var my_basis = Basis(\n" +" Vector3(2, 0, 0),\n" +" Vector3(0, 4, 0),\n" +" Vector3(0, 0, 8)\n" +")\n" +"# Ruotando la base in qualsiasi modo conserva la sua scala.\n" +"my_basis = my_basis.rotated(Vector3.UP, TAU / 2)\n" +"my_basis = my_basis.rotated(Vector3.RIGHT, TAU / 4)\n" +"\n" +"print(my_basis.get_scale()) # Prints (2.0, 4.0, 8.0)\n" +"[/gdscript]\n" +"[csharp]\n" +"var myBasis = new Basis(\n" +" Vector3(2.0f, 0.0f, 0.0f),\n" +" Vector3(0.0f, 4.0f, 0.0f),\n" +" Vector3(0.0f, 0.0f, 8.0f)\n" +");\n" +"// Ruotando la base in qualsiasi modo conserva la sua scala.\n" +"myBasis = myBasis.Rotated(Vector3.Up, Mathf.Tau / 2.0f);\n" +"myBasis = myBasis.Rotated(Vector3.Right, Mathf.Tau / 4.0f);\n" +"\n" +"GD.Print(myBasis.Scale); // Prints (2, 4, 8)\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Nota:[/b] Se il valore restituito da [method determinant] è negativo, " +"anche la scala è negativa." msgid "" "Returns the [url=https://en.wikipedia.org/wiki/Invertible_matrix]inverse of " @@ -16958,6 +23160,244 @@ msgstr "" "Restituisce [code]true[/code] se i valori di questa base sono finiti, " "chiamando [method Vector2.is_finite] su tutti i componenti vettoriali." +msgid "" +"Creates a new [Basis] with a rotation such that the forward axis (-Z) points " +"towards the [param target] position.\n" +"By default, the -Z axis (camera forward) is treated as forward (implies +X is " +"right). If [param use_model_front] is [code]true[/code], the +Z axis (asset " +"front) is treated as forward (implies +X is left) and points toward the " +"[param target] position.\n" +"The up axis (+Y) points as close to the [param up] vector as possible while " +"staying perpendicular to the forward axis. The returned basis is " +"orthonormalized (see [method orthonormalized]).\n" +"The [param target] and the [param up] cannot be [constant Vector3.ZERO], and " +"shouldn't be colinear to avoid unintended rotation around local Z axis." +msgstr "" +"Crea una nuova [Basis] con una rotazione tale che l'asse in avanti (-Z) punti " +"verso la posizione [param target].\n" +"Come predefinito, l'asse -Z (avanti per la telecamera) viene trattato come " +"\"in avanti\" (implica che +X sia a destra). Se [param use_model_front] è " +"[code]true[/code], l'asse +Z (avanti per gli asset) viene trattato come \"in " +"avanti\" (implica che +X sia a sinistra) e punta verso la posizione [param " +"target].\n" +"L'asse in alto (+Y) punta il più vicino possibile al vettore [param up] pur " +"rimanendo perpendicolare all'asse in avanti. La base restituita è " +"ortonormalizzata (vedi [method orthonormalized]).\n" +"I vettori [param target] e [param up] non possono essere [constant Vector3." +"ZERO] e non dovrebbero essere collineari per evitare una rotazione " +"involontaria attorno all'asse Z locale." + +msgid "" +"Returns the orthonormalized version of this basis. An orthonormal basis is " +"both [i]orthogonal[/i] (the axes are perpendicular to each other) and " +"[i]normalized[/i] (the axes have a length of [code]1.0[/code]), which also " +"means it can only represent a rotation.\n" +"It is often useful to call this method to avoid rounding errors on a rotating " +"basis:\n" +"[codeblocks]\n" +"[gdscript]\n" +"# Rotate this Node3D every frame.\n" +"func _process(delta):\n" +" basis = basis.rotated(Vector3.UP, TAU * delta)\n" +" basis = basis.rotated(Vector3.RIGHT, TAU * delta)\n" +"\n" +" basis = basis.orthonormalized()\n" +"[/gdscript]\n" +"[csharp]\n" +"// Rotate this Node3D every frame.\n" +"public override void _Process(double delta)\n" +"{\n" +" Basis = Basis.Rotated(Vector3.Up, Mathf.Tau * (float)delta)\n" +" .Rotated(Vector3.Right, Mathf.Tau * (float)delta)\n" +" .Orthonormalized();\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"Restituisce la versione ortonormalizzata di questa base. Una base ortonormale " +"è sia [i]ortogonale[/i] (gli assi sono perpendicolari tra loro) sia " +"[i]normalizzata[/i] (gli assi hanno una lunghezza di [code]1.0[/code]), il " +"che significa inoltre che può rappresentare solo la rotazione.\n" +"Spesso è utile chiamare questo metodo per evitare errori di arrotondamento su " +"una base in rotazione:\n" +"[codeblocks]\n" +"[gdscript]\n" +"# Ruota questo Node3D ogni frame.\n" +"func _process(delta):\n" +" basis = basis.rotated(Vector3.UP, TAU * delta)\n" +" basis = basis.rotated(Vector3.RIGHT, TAU * delta)\n" +"\n" +" basis = basis.orthonormalized()\n" +"[/gdscript]\n" +"[csharp]\n" +"// Ruota questo Node3D ogni frame.\n" +"public override void _Process(double delta)\n" +"{\n" +" Basis = Basis.Rotated(Vector3.Up, Mathf.Tau * (float)delta)\n" +" .Rotated(Vector3.Right, Mathf.Tau * (float)delta)\n" +" .Orthonormalized();\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns a copy of this basis rotated around the given [param axis] by the " +"given [param angle] (in radians).\n" +"The [param axis] must be a normalized vector (see [method Vector3." +"normalized]). If [param angle] is positive, the basis is rotated counter-" +"clockwise around the axis.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var my_basis = Basis.IDENTITY\n" +"var angle = TAU / 2\n" +"\n" +"my_basis = my_basis.rotated(Vector3.UP, angle) # Rotate around the up axis " +"(yaw).\n" +"my_basis = my_basis.rotated(Vector3.RIGHT, angle) # Rotate around the right " +"axis (pitch).\n" +"my_basis = my_basis.rotated(Vector3.BACK, angle) # Rotate around the back " +"axis (roll).\n" +"[/gdscript]\n" +"[csharp]\n" +"var myBasis = Basis.Identity;\n" +"var angle = Mathf.Tau / 2.0f;\n" +"\n" +"myBasis = myBasis.Rotated(Vector3.Up, angle); // Rotate around the up axis " +"(yaw).\n" +"myBasis = myBasis.Rotated(Vector3.Right, angle); // Rotate around the right " +"axis (pitch).\n" +"myBasis = myBasis.Rotated(Vector3.Back, angle); // Rotate around the back " +"axis (roll).\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"Restituisce questa base ruotata attorno all'asse [para axis] di [param angle] " +"(in radianti).\n" +"[param axis] deve essere un vettore normalizzato (vedi [method Vector3." +"normalized]). Se [param angle] è positivo, la base viene ruotata in senso " +"antiorario attorno all'asse.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var my_basis = Basis.IDENTITY\n" +"var angle = TAU / 2\n" +"\n" +"my_basis = my_basis.rotated(Vector3.UP, angle) # Ruota intorno all'asse " +"superiore (imbardata).\n" +"my_basis = my_basis.rotated(Vector3.RIGHT, angle) # Ruota intorno all'asse " +"destro (beccheggio).\n" +"my_basis = my_basis.rotated(Vector3.BACK, angle) # Ruota intorno all'asse " +"posteriore (rollio).\n" +"[/gdscript]\n" +"[csharp]\n" +"var myBasis = Basis.Identity;\n" +"var angle = Mathf.Tau / 2.0f;\n" +"\n" +"myBasis = myBasis.Rotated(Vector3.Up, angle); // Ruota intorno all'asse " +"superiore (imbardata).\n" +"myBasis = myBasis.Rotated(Vector3.Right, angle); // Ruota intorno all'asse " +"destro (beccheggio).\n" +"myBasis = myBasis.Rotated(Vector3.Back, angle); // Ruota intorno all'asse " +"posteriore (rollio).\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns this basis with each axis's components scaled by the given [param " +"scale]'s components.\n" +"The basis matrix's rows are multiplied by [param scale]'s components. This " +"operation is a global scale (relative to the parent).\n" +"[codeblocks]\n" +"[gdscript]\n" +"var my_basis = Basis(\n" +" Vector3(1, 1, 1),\n" +" Vector3(2, 2, 2),\n" +" Vector3(3, 3, 3)\n" +")\n" +"my_basis = my_basis.scaled(Vector3(0, 2, -2))\n" +"\n" +"print(my_basis.x) # Prints (0.0, 2.0, -2.0)\n" +"print(my_basis.y) # Prints (0.0, 4.0, -4.0)\n" +"print(my_basis.z) # Prints (0.0, 6.0, -6.0)\n" +"[/gdscript]\n" +"[csharp]\n" +"var myBasis = new Basis(\n" +" new Vector3(1.0f, 1.0f, 1.0f),\n" +" new Vector3(2.0f, 2.0f, 2.0f),\n" +" new Vector3(3.0f, 3.0f, 3.0f)\n" +");\n" +"myBasis = myBasis.Scaled(new Vector3(0.0f, 2.0f, -2.0f));\n" +"\n" +"GD.Print(myBasis.X); // Prints (0, 2, -2)\n" +"GD.Print(myBasis.Y); // Prints (0, 4, -4)\n" +"GD.Print(myBasis.Z); // Prints (0, 6, -6)\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"Restituisce questa base con i componenti di ciascun asse ridimensionati in " +"base ai componenti di [param scale].\n" +"Le righe della matrice base sono moltiplicate per i componenti di [param " +"scale]. Questa operazione è una scala globale (relativa al genitore).\n" +"[codeblocks]\n" +"[gdscript]\n" +"var my_basis = Basis(\n" +" Vector3(1, 1, 1),\n" +" Vector3(2, 2, 2),\n" +" Vector3(3, 3, 3)\n" +")\n" +"my_basis = my_basis.scaled(Vector3(0, 2, -2))\n" +"\n" +"print(my_basis.x) # Stampa (0.0, 2.0, -2.0)\n" +"print(my_basis.y) # Stampa (0.0, 4.0, -4.0)\n" +"print(my_basis.z) # Stampa (0.0, 6.0, -6.0)\n" +"[/gdscript]\n" +"[csharp]\n" +"var myBasis = new Basis(\n" +" new Vector3(1.0f, 1.0f, 1.0f),\n" +" new Vector3(2.0f, 2.0f, 2.0f),\n" +" new Vector3(3.0f, 3.0f, 3.0f)\n" +");\n" +"myBasis = myBasis.Scaled(new Vector3(0.0f, 2.0f, -2.0f));\n" +"\n" +"GD.Print(myBasis.X); // Stampa (0, 2, -2)\n" +"GD.Print(myBasis.Y); // Stampa (0, 4, -4)\n" +"GD.Print(myBasis.Z); // Stampa (0, 6, -6)\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Performs a spherical-linear interpolation with the [param to] basis, given a " +"[param weight]. Both this basis and [param to] should represent a rotation.\n" +"[b]Example:[/b] Smoothly rotate a [Node3D] to the target basis over time, " +"with a [Tween]:\n" +"[codeblock]\n" +"var start_basis = Basis.IDENTITY\n" +"var target_basis = Basis.IDENTITY.rotated(Vector3.UP, TAU / 2)\n" +"\n" +"func _ready():\n" +" create_tween().tween_method(interpolate, 0.0, 1.0, 5.0).set_trans(Tween." +"TRANS_EXPO)\n" +"\n" +"func interpolate(weight):\n" +" basis = start_basis.slerp(target_basis, weight)\n" +"[/codeblock]" +msgstr "" +"Esegue un'interpolazione sferico-lineare con la base [param to], dato un peso " +"[param weight]. Sia questa base che [param to] dovrebbero rappresentare una " +"rotazione.\n" +"[b]Esempio:[/b] Ruota gradualmente un [Node3D] sulla base di destinazione nel " +"corso del tempo, con un [Tween].\n" +"[codeblock]\n" +"var start_basis = Basis.IDENTITY\n" +"var target_basis = Basis.IDENTITY.rotated(Vector3.UP, TAU / 2)\n" +"\n" +"func _ready():\n" +" create_tween().tween_method(interpolate, 0.0, 1.0, 5.0).set_trans(Tween." +"TRANS_EXPO)\n" +"\n" +"func interpolate(weight):\n" +" basis = start_basis.slerp(target_basis, weight)\n" +"[/codeblock]" + msgid "" "Returns the transposed dot product between [param with] and the [member x] " "axis (see [method transposed]).\n" @@ -16985,6 +23425,65 @@ msgstr "" "z] (vedi [method transposed]).\n" "Questo è equivalente a [code]basis.z.dot(vector)[/code]." +msgid "" +"Returns the transposed version of this basis. This turns the basis matrix's " +"columns into rows, and its rows into columns.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var my_basis = Basis(\n" +" Vector3(1, 2, 3),\n" +" Vector3(4, 5, 6),\n" +" Vector3(7, 8, 9)\n" +")\n" +"my_basis = my_basis.transposed()\n" +"\n" +"print(my_basis.x) # Prints (1.0, 4.0, 7.0)\n" +"print(my_basis.y) # Prints (2.0, 5.0, 8.0)\n" +"print(my_basis.z) # Prints (3.0, 6.0, 9.0)\n" +"[/gdscript]\n" +"[csharp]\n" +"var myBasis = new Basis(\n" +" new Vector3(1.0f, 2.0f, 3.0f),\n" +" new Vector3(4.0f, 5.0f, 6.0f),\n" +" new Vector3(7.0f, 8.0f, 9.0f)\n" +");\n" +"myBasis = myBasis.Transposed();\n" +"\n" +"GD.Print(myBasis.X); // Prints (1, 4, 7)\n" +"GD.Print(myBasis.Y); // Prints (2, 5, 8)\n" +"GD.Print(myBasis.Z); // Prints (3, 6, 9)\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"Restituisce la versione trasposta di questa base. Ciò trasforma le colonne " +"della matrice base in righe e le sue righe in colonne.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var my_basis = Basis(\n" +" Vector3(1, 2, 3),\n" +" Vector3(4, 5, 6),\n" +" Vector3(7, 8, 9)\n" +")\n" +"my_basis = my_basis.transposed()\n" +"\n" +"print(my_basis.x) # Stampa (1.0, 4.0, 7.0).\n" +"print(my_basis.y) # Stampa (2.0, 5.0, 8.0).\n" +"print(my_basis.z) # Stampa (3.0, 6.0, 9.0).\n" +"[/gdscript]\n" +"[csharp]\n" +"var myBasis = new Basis(\n" +" new Vector3(1.0f, 2.0f, 3.0f),\n" +" new Vector3(4.0f, 5.0f, 6.0f),\n" +" new Vector3(7.0f, 8.0f, 9.0f)\n" +");\n" +"myBasis = myBasis.Transposed();\n" +"\n" +"GD.Print(myBasis.X); // Stampa (1, 4, 7).\n" +"GD.Print(myBasis.Y); // Stampa (2, 5, 8).\n" +"GD.Print(myBasis.Z); // Stampa (3, 6, 9).\n" +"[/csharp]\n" +"[/codeblocks]" + msgid "" "The basis's X axis, and the column [code]0[/code] of the matrix.\n" "On the identity basis, this vector points right ([constant Vector3.RIGHT])." @@ -17006,6 +23505,53 @@ msgstr "" "L'asse Z della base e la colonna [code]2[/code] della matrice.\n" "Sulla base identità, questo vettore punta indietro ([costant Vector3.BACK])." +msgid "" +"The identity [Basis]. This is an orthonormal basis with no rotation, no " +"shear, and a scale of [constant Vector3.ONE]. This also means that:\n" +"- The [member x] points right ([constant Vector3.RIGHT]);\n" +"- The [member y] points up ([constant Vector3.UP]);\n" +"- The [member z] points back ([constant Vector3.BACK]).\n" +"[codeblock]\n" +"var basis = Basis.IDENTITY\n" +"print(\"| X | Y | Z\")\n" +"print(\"| %.f | %.f | %.f\" % [basis.x.x, basis.y.x, basis.z.x])\n" +"print(\"| %.f | %.f | %.f\" % [basis.x.y, basis.y.y, basis.z.y])\n" +"print(\"| %.f | %.f | %.f\" % [basis.x.z, basis.y.z, basis.z.z])\n" +"# Prints:\n" +"# | X | Y | Z\n" +"# | 1 | 0 | 0\n" +"# | 0 | 1 | 0\n" +"# | 0 | 0 | 1\n" +"[/codeblock]\n" +"If a [Vector3] or another [Basis] is transformed (multiplied) by this " +"constant, no transformation occurs.\n" +"[b]Note:[/b] In GDScript, this constant is equivalent to creating a " +"[constructor Basis] without any arguments. It can be used to make your code " +"clearer, and for consistency with C#." +msgstr "" +"La [Basis] di identità. Questa è una base senza rotazione, senza inclinazione " +"e con una scala pari a [constant Vector3.ONE]. Ciò significa anche che:\n" +"- La [member x] punta a destra ([constant Vector3.RIGHT]);\n" +"- La [member y] punta in alto ([constant Vector3.UP]);\n" +"- La [member z] punta indietro ([constant Vector3.BACK]).\n" +"[codeblock]\n" +"var basis = Basis.IDENTITY\n" +"print(\"| X | Y | Z\")\n" +"print(\"| %.f | %.f | %.f\" % [basis.x.x, basis.y.x, basis.z.x])\n" +"print(\"| %.f | %.f | %.f\" % [basis.x.y, basis.y.y, basis.z.y])\n" +"print(\"| %.f | %.f | %.f\" % [basis.x.z, basis.y.z, basis.z.z])\n" +"# Stampa:\n" +"# | X | Y | Z\n" +"# | 1 | 0 | 0\n" +"# | 0 | 1 | 0\n" +"# | 0 | 0 | 1\n" +"[/codeblock]\n" +"Se un [Vector3] o un altra [Basis] viene trasformata (moltiplicata) per " +"questa costante, non si verifica alcuna trasformazione.\n" +"[b]Nota:[/b] In GDScript, questa costante è identica alla creazione di una " +"[constructor Basis] senza parametri. Questa costante può essere usata per " +"rendere il codice più chiaro e per coerenza con C#." + msgid "" "When any basis is multiplied by [constant FLIP_X], it negates all components " "of the [member x] axis (the X column).\n" @@ -17057,6 +23603,39 @@ msgstr "" "Trasforma (moltiplica) la base [param right] per questa base.\n" "Questa è l'operazione eseguita tra genitore e figlio [Node3D]." +msgid "" +"Transforms (multiplies) the [param right] vector by this basis, returning a " +"[Vector3].\n" +"[codeblocks]\n" +"[gdscript]\n" +"# Basis that swaps the X/Z axes and doubles the scale.\n" +"var my_basis = Basis(Vector3(0, 2, 0), Vector3(2, 0, 0), Vector3(0, 0, 2))\n" +"print(my_basis * Vector3(1, 2, 3)) # Prints (4.0, 2.0, 6.0)\n" +"[/gdscript]\n" +"[csharp]\n" +"// Basis that swaps the X/Z axes and doubles the scale.\n" +"var myBasis = new Basis(new Vector3(0, 2, 0), new Vector3(2, 0, 0), new " +"Vector3(0, 0, 2));\n" +"GD.Print(myBasis * new Vector3(1, 2, 3)); // Prints (4, 2, 6)\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"Trasforma (moltiplica) il vettore [param right] per questa base, restituendo " +"un [Vector3].\n" +"[codeblocks]\n" +"[gdscript]\n" +"# Base che scambia gli assi X/Z e raddoppia la scala.\n" +"var my_basis = Basis(Vector3(0, 2, 0), Vector3(2, 0, 0), Vector3(0, 0, 2))\n" +"print(my_basis * Vector3(1, 2, 3)) # Stampa (4.0, 2.0, 6.0)\n" +"[/gdscript]\n" +"[csharp]\n" +"// Base che scambia gli assi X/Z e raddoppia la scala.\n" +"var myBasis = new Basis(new Vector3(0, 2, 0), new Vector3(2, 0, 0), new " +"Vector3(0, 0, 2));\n" +"GD.Print(myBasis * new Vector3(1, 2, 3)); // Prints (4, 2, 6)\n" +"[/csharp]\n" +"[codeblocks]" + msgid "" "Multiplies all components of the [Basis] by the given [float]. This affects " "the basis's scale uniformly, resizing all 3 axes by the [param right] value." @@ -17182,6 +23761,31 @@ msgstr "" "situati all'esterno di [param rect] non sono influenzati da [method " "grow_mask]." +msgid "" +"Creates an [Array] of polygons covering a rectangular portion of the bitmap. " +"It uses a marching squares algorithm, followed by Ramer-Douglas-Peucker (RDP) " +"reduction of the number of vertices. Each polygon is described as a " +"[PackedVector2Array] of its vertices.\n" +"To get polygons covering the whole bitmap, pass:\n" +"[codeblock]\n" +"Rect2(Vector2(), get_size())\n" +"[/codeblock]\n" +"[param epsilon] is passed to RDP to control how accurately the polygons cover " +"the bitmap: a lower [param epsilon] corresponds to more points in the " +"polygons." +msgstr "" +"Crea un [Array] di poligoni che coprono una porzione rettangolare della " +"bitmap. Utilizza un algoritmo \"marching squares\", seguito dalla riduzione " +"di Ramer-Douglas-Peucker (RDP) del numero di vertici. Ogni poligono è " +"descritto come un [PackedVector2Array] dei suoi vertici.\n" +"Per ottenere poligoni che coprono l'intera bitmap, passa:\n" +"[codeblock]\n" +"Rect2(Vector2(), get_size())\n" +"[/codeblock]\n" +"[param epsilon] viene passato a RDP per controllare la precisione con cui i " +"poligoni coprono la bitmap: un [param epsilon] inferiore corrisponde a più " +"punti nei poligoni." + msgid "Resizes the image to [param new_size]." msgstr "Ridimensiona l'immagine a [param new_size]." @@ -17228,6 +23832,28 @@ msgstr "" "Ripristina l'osso alla posa di riposo. Ciò equivale a impostare [member " "Node2D.transform] a [member rest]." +msgid "" +"Returns whether this [Bone2D] is going to autocalculate its length and bone " +"angle using its first [Bone2D] child node, if one exists. If there are no " +"[Bone2D] children, then it cannot autocalculate these values and will print a " +"warning." +msgstr "" +"Restituisce se questo [Bone2D] calcolerà automaticamente la sua lunghezza e " +"l'angolo dell'osso tramite il suo primo nodo figlio [Bone2D], se ne esiste " +"uno. Se non ci sono figli [Bone2D], non può calcolare automaticamente questi " +"valori e stamperà un avviso." + +msgid "" +"Returns the angle of the bone in the [Bone2D].\n" +"[b]Note:[/b] This is different from the [Bone2D]'s rotation. The bone's angle " +"is the rotation of the bone shown by the gizmo, which is unaffected by the " +"[Bone2D]'s [member Node2D.transform]." +msgstr "" +"Restituisce l'angolo dell'osso in [Bone2D].\n" +"[b]Nota:[/b] Questo è diverso dalla rotazione di [Bone2D]. L'angolo dell'osso " +"è la rotazione dell'osso mostrata dal gizmo, che non è influenzata dal " +"[member Node2D.transform] di [Bone2D]." + msgid "" "Returns the node's index as part of the entire skeleton. See [Skeleton2D]." msgstr "" @@ -17244,6 +23870,30 @@ msgstr "" "Restituisce il [member rest] [Transform2D] del nodo se non ha un genitore, o " "la sua posa di riposo relativa al suo genitore." +msgid "" +"When set to [code]true[/code], the [Bone2D] node will attempt to " +"automatically calculate the bone angle and length using the first child " +"[Bone2D] node, if one exists. If none exist, the [Bone2D] cannot " +"automatically calculate these values and will print a warning." +msgstr "" +"Se impostato su [code]true[/code], il nodo [Bone2D] tenterà di calcolare " +"automaticamente l'angolo e la lunghezza dell'osso tramite il primo nodo " +"figlio [Bone2D], se ne esiste uno. Se non ci sono, [Bone2D] non può calcolare " +"automaticamente questi valori e stamperà un avviso." + +msgid "" +"Sets the bone angle for the [Bone2D]. This is typically set to the rotation " +"from the [Bone2D] to a child [Bone2D] node.\n" +"[b]Note:[/b] This is different from the [Bone2D]'s rotation. The bone's angle " +"is the rotation of the bone shown by the gizmo, which is unaffected by the " +"[Bone2D]'s [member Node2D.transform]." +msgstr "" +"Imposta l'angolo dell'osso per il [Bone2D]. Questo è in genere impostato " +"sulla rotazione dal [Bone2D] a un nodo figlio [Bone2D].\n" +"[b]Nota:[/b] Questo è diverso dalla rotazione di [Bone2D]. L'angolo dell'osso " +"è la rotazione dell'osso mostrata dal gizmo, che non è influenzata dal " +"[member Node2D.transform] di [Bone2D]." + msgid "Sets the length of the bone in the [Bone2D]." msgstr "Imposta la lunghezza dell'osso nel [Bone2D]." @@ -17276,12 +23926,70 @@ msgstr "" "Restituisce il percorso ([NodePath]) al nodo [Skeleton3D] esterno, se ne è " "stato impostato uno." +msgid "Get parent or external [Skeleton3D] node if found." +msgstr "Ottiene il nodo [Skeleton3D] genitore o esterno se trovato." + +msgid "" +"Returns whether the BoneAttachment3D node is using an external [Skeleton3D] " +"rather than attempting to use its parent node as the [Skeleton3D]." +msgstr "" +"Restituisce se il nodo BoneAttachment3D sta utilizzando uno [Skeleton3D] " +"esterno anziché tentare di utilizzare il suo nodo padre come [Skeleton3D]." + +msgid "" +"A function that is called automatically when the [Skeleton3D] is updated. " +"This function is where the [BoneAttachment3D] node updates its position so it " +"is correctly bound when it is [i]not[/i] set to override the bone pose." +msgstr "" +"Una funzione che viene chiamata automaticamente quando [Skeleton3D] viene " +"aggiornato. Questa funzione è dove il nodo [BoneAttachment3D] aggiorna la sua " +"posizione in modo che sia correttamente vincolato quando [i]non[/i] è " +"impostato per sovrascrivere la posa dell'osso." + +msgid "" +"Sets the [NodePath] to the external skeleton that the BoneAttachment3D node " +"should use. See [method set_use_external_skeleton] to enable the external " +"[Skeleton3D] node." +msgstr "" +"Imposta il [NodePath] sullo scheletro esterno che il nodo BoneAttachment3D " +"dovrebbe usare. Vedi [method set_use_external_skeleton] per abilitare il nodo " +"[Skeleton3D] esterno." + +msgid "" +"Sets whether the BoneAttachment3D node will use an external [Skeleton3D] node " +"rather than attempting to use its parent node as the [Skeleton3D]. When set " +"to [code]true[/code], the BoneAttachment3D node will use the external " +"[Skeleton3D] node set in [method set_external_skeleton]." +msgstr "" +"Imposta se il nodo BoneAttachment3D utilizzerà un nodo [Skeleton3D] esterno " +"anziché tentare di utilizzare il suo nodo padre come [Skeleton3D]. Se " +"impostato su [code]true[/code], il nodo BoneAttachment3D utilizzerà il nodo " +"[Skeleton3D] esterno impostato in [method set_external_skeleton]." + msgid "The index of the attached bone." msgstr "L'indice dell'osso attaccato." msgid "The name of the attached bone." msgstr "Il nome dell'osso attaccato." +msgid "" +"Whether the BoneAttachment3D node will override the bone pose of the bone it " +"is attached to. When set to [code]true[/code], the BoneAttachment3D node can " +"change the pose of the bone. When set to [code]false[/code], the " +"BoneAttachment3D will always be set to the bone's transform.\n" +"[b]Note:[/b] This override performs interruptively in the skeleton update " +"process using signals due to the old design. It may cause unintended behavior " +"when used at the same time with [SkeletonModifier3D]." +msgstr "" +"Se il nodo BoneAttachment3D sovrascriverà la posa dell'osso a cui è " +"attaccato. Se impostato su [code]true[/code], il nodo BoneAttachment3D può " +"modificare la posa dell'osso. Se impostato su [code]false[/code], " +"BoneAttachment3D sarà sempre impostato sulla trasformazione dell'osso.\n" +"[b]Nota:[/b] Questa sostituzione viene effettuata in modo interruttivo nel " +"processo di aggiornamento dello scheletro, attraverso segnali, a causa del " +"vecchio design. Potrebbe causare un comportamento indesiderato se utilizzato " +"con [SkeletonModifier3D] allo stesso tempo." + msgid "" "Describes a mapping of bone names for retargeting [Skeleton3D] into common " "names defined by a [SkeletonProfile]." @@ -17289,9 +23997,57 @@ msgstr "" "Definisce una mappatura dei nomi delle ossa per il reindirizzamento di " "[Skeleton3D] in nomi comuni definiti da un [SkeletonProfile]." +msgid "" +"This class contains a dictionary that uses a list of bone names in " +"[SkeletonProfile] as key names.\n" +"By assigning the actual [Skeleton3D] bone name as the key value, it maps the " +"[Skeleton3D] to the [SkeletonProfile]." +msgstr "" +"Questa classe contiene un dizionario che utilizza un elenco di nomi di ossa " +"in [SkeletonProfile] come nomi chiave.\n" +"Assegnando il nome effettivo dell'osso di [Skeleton3D] come valore di chiave, " +"mappa lo [Skeleton3D] allo [SkeletonProfile]." + msgid "Retargeting 3D Skeletons" msgstr "Reindirizzare gli scheletri 3D" +msgid "" +"Returns a profile bone name having [param skeleton_bone_name]. If not found, " +"an empty [StringName] will be returned.\n" +"In the retargeting process, the returned bone name is the bone name of the " +"target skeleton." +msgstr "" +"Restituisce un nome di osso nel profilo con [param skeleton_bone_name]. Se " +"non viene trovato, verrà restituito uno [StringName] vuoto.\n" +"Nel processo di reindirizzamento, il nome restituito è il nome dell'osso " +"dello scheletro di destinazione." + +msgid "" +"Returns a skeleton bone name is mapped to [param profile_bone_name].\n" +"In the retargeting process, the returned bone name is the bone name of the " +"source skeleton." +msgstr "" +"Restituisce un nome di osso dello scheletro mappato su [param " +"profile_bone_name].\n" +"Nel processo di Nel processo di reindirizzamento, il nome restituito è il " +"nome dell'osso dello scheletro di destinazione." + +msgid "" +"Maps a skeleton bone name to [param profile_bone_name].\n" +"In the retargeting process, the setting bone name is the bone name of the " +"source skeleton." +msgstr "" +"Mappa un nome di un osso dello scheletro a [param profile_bone_name].\n" +"Nel processo di Nel processo di reindirizzamento, il nome impostato è il nome " +"dell'osso dello scheletro sorgente." + +msgid "" +"A [SkeletonProfile] of the mapping target. Key names in the [BoneMap] are " +"synchronized with it." +msgstr "" +"Uno [SkeletonProfile] della destinazione di mappatura. I nomi delle chiavi " +"nella [BoneMap] sono sincronizzati con esso." + msgid "" "This signal is emitted when change the key value in the [BoneMap]. This is " "used to validate mapping and to update [BoneMap] editor." @@ -17532,9 +24288,44 @@ msgstr "" msgid "The child controls will be centered in the container." msgstr "I controlli figli saranno centrati nel contenitore." +msgid "" +"The child controls will be arranged at the end of the container, i.e. bottom " +"if orientation is vertical, right if orientation is horizontal (left for RTL " +"layout)." +msgstr "" +"I controlli figlio saranno disposti alla fine del contenitore, ovvero in " +"basso se l'orientamento è verticale, a destra se l'orientamento è orizzontale " +"(a sinistra per il layout RTL)." + msgid "The space between the [BoxContainer]'s elements, in pixels." msgstr "Lo spazio tra gli elementi del[BoxContainer], in pixel." +msgid "Generate an axis-aligned box [PrimitiveMesh]." +msgstr "Genera una [PrimitiveMesh] di riquadro allineato agli assi." + +msgid "" +"Generate an axis-aligned box [PrimitiveMesh].\n" +"The box's UV layout is arranged in a 3×2 layout that allows texturing each " +"face individually. To apply the same texture on all faces, change the " +"material's UV property to [code]Vector3(3, 2, 1)[/code]. This is equivalent " +"to adding [code]UV *= vec2(3.0, 2.0)[/code] in a vertex shader.\n" +"[b]Note:[/b] When using a large textured [BoxMesh] (e.g. as a floor), you may " +"stumble upon UV jittering issues depending on the camera angle. To solve " +"this, increase [member subdivide_depth], [member subdivide_height] and " +"[member subdivide_width] until you no longer notice UV jittering." +msgstr "" +"Genera una [PrimitiveMesh] di riquadro allineato agli assi.\n" +"Il layout UV del riquadro è organizzato in un layout 3×2 che consente di " +"texturizzare ogni faccia singolarmente. Per applicare la stessa texture su " +"tutte le facce, modifica la proprietà UV del materiale in [code]Vector3(3, 2, " +"1)[/code]. Ciò equivale ad aggiungere [code]UV *= vec2(3.0, 2.0)[/code] in " +"uno shader di vertici.\n" +"[b]Nota:[/b] quando si utilizza una grande [BoxMesh] texturizzata (ad esempio " +"come un pavimento), si possono riscontrare problemi di tremolio dell'UV a " +"seconda dell'angolazione della telecamera. Per risolvere questo problema, " +"aumenta [member subdivide_depth], [member subdivide_height] e [member " +"subdivide_width] finché non noti più alcun tremolio dell'UV." + msgid "The box's width, height and depth." msgstr "La larghezza, l'altezza, e la profondità della scatola." @@ -17580,9 +24371,86 @@ msgstr "" "veloce di [CapsuleShape3D] e [CylinderShape3D], ma è più lenta di " "[SphereShape3D]." +msgid "3D Kinematic Character Demo" +msgstr "Demo di personaggio cinematico 3D" + msgid "A themed button that can contain text and an icon." msgstr "Un pulsante con tema che può contenere testo e un'icona." +msgid "" +"[Button] is the standard themed button. It can contain text and an icon, and " +"it will display them according to the current [Theme].\n" +"[b]Example:[/b] Create a button and connect a method that will be called when " +"the button is pressed:\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _ready():\n" +" var button = Button.new()\n" +" button.text = \"Click me\"\n" +" button.pressed.connect(_button_pressed)\n" +" add_child(button)\n" +"\n" +"func _button_pressed():\n" +" print(\"Hello world!\")\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Ready()\n" +"{\n" +" var button = new Button();\n" +" button.Text = \"Click me\";\n" +" button.Pressed += ButtonPressed;\n" +" AddChild(button);\n" +"}\n" +"\n" +"private void ButtonPressed()\n" +"{\n" +" GD.Print(\"Hello world!\");\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"See also [BaseButton] which contains common properties and methods associated " +"with this node.\n" +"[b]Note:[/b] Buttons do not detect touch input and therefore don't support " +"multitouch, since mouse emulation can only press one button at a given time. " +"Use [TouchScreenButton] for buttons that trigger gameplay movement or actions." +msgstr "" +"[Button] è il pulsante standard con tema. Può contenere testo e un'icona e li " +"visualizzerà in base al [Theme] attuale.\n" +"[b]Esempio[/b]: Crea di un pulsante e connetti un metodo che verrà chiamato " +"quando il pulsante viene premuto:\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _ready():\n" +" var button = Button.new()\n" +" button.text = \"Cliccami\"\n" +" button.pressed.connect(self._button_pressed)\n" +" add_child(button)\n" +"\n" +"func _button_pressed():\n" +" print(\"Ciao mondo!\")\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Ready()\n" +"{\n" +" var button = new Button();\n" +" button.Text = \"Cliccami\";\n" +" button.Pressed += ButtonPressed;\n" +" AddChild(button);\n" +"}\n" +"\n" +"private void ButtonPressed()\n" +"{\n" +" GD.Print(\"Ciao mondo!\");\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"Vedi anche [BaseButton] che contiene proprietà e metodi comuni associati a " +"questo nodo.\n" +"[b]Nota:[/b] I pulsanti non interpretano gli input di tocco e quindi non " +"supportano il multitouch, poiché l'emulazione del mouse può premere solo un " +"pulsante alla volta. Utilizza [TouchScreenButton] per i pulsanti che attivano " +"movimenti o azioni di gioco." + msgid "Operating System Testing Demo" msgstr "Demo di test di sistema operativo" @@ -17600,6 +24468,17 @@ msgstr "" "Se impostato a un valore diverso da [constant TextServer.AUTOWRAP_OFF], il " "testo è racchiuso all'interno del rettangolo limite del nodo." +msgid "" +"If [code]true[/code], text that is too large to fit the button is clipped " +"horizontally. If [code]false[/code], the button will always be wide enough to " +"hold the text. The text is not vertically clipped, and the button's height is " +"not affected by this property." +msgstr "" +"Se [code]true[/code], il testo che è troppo grande per adattarsi al pulsante " +"è ritagliato orizzontalmente. Se [code]false[/code], il pulsante sarà sempre " +"abbastanza largo da contenere il testo. Il testo non è ritagliato " +"verticalmente e l'altezza del pulsante non è influenzata da questa proprietà." + msgid "" "When enabled, the button's icon will expand/shrink to fit the button's size " "while keeping its aspect. See also [theme_item icon_max_width]." @@ -17762,6 +24641,13 @@ msgstr "" "base al rapporto dell'icona. Se il pulsante ha icone aggiuntive (ad esempio " "[CheckBox]), anche queste saranno limitate." +msgid "" +"Additional vertical spacing between lines (in pixels), spacing is added to " +"line descent. This value can be negative." +msgstr "" +"Spaziatura verticale aggiuntiva tra le righe (in pixel), la spaziatura è " +"aggiunta alla discesa della riga. Questo valore può essere negativo." + msgid "" "The size of the text outline.\n" "[b]Note:[/b] If using a font with [member FontFile." @@ -17905,6 +24791,151 @@ msgstr "Emesso quando viene premuto uno dei pulsanti del gruppo." msgid "A built-in type representing a method or a standalone function." msgstr "Un tipo integrato che rappresenta un metodo o una funzione autonoma." +msgid "" +"[Callable] is a built-in [Variant] type that represents a function. It can " +"either be a method within an [Object] instance, or a custom callable used for " +"different purposes (see [method is_custom]). Like all [Variant] types, it can " +"be stored in variables and passed to other functions. It is most commonly " +"used for signal callbacks.\n" +"[codeblocks]\n" +"[gdscript]\n" +"func print_args(arg1, arg2, arg3 = \"\"):\n" +" prints(arg1, arg2, arg3)\n" +"\n" +"func test():\n" +" var callable = Callable(self, \"print_args\")\n" +" callable.call(\"hello\", \"world\") # Prints \"hello world \".\n" +" callable.call(Vector2.UP, 42, callable) # Prints \"(0.0, -1.0) 42 " +"Node(node.gd)::print_args\"\n" +" callable.call(\"invalid\") # Invalid call, should have at least 2 " +"arguments.\n" +"[/gdscript]\n" +"[csharp]\n" +"// Default parameter values are not supported.\n" +"public void PrintArgs(Variant arg1, Variant arg2, Variant arg3 = default)\n" +"{\n" +" GD.PrintS(arg1, arg2, arg3);\n" +"}\n" +"\n" +"public void Test()\n" +"{\n" +" // Invalid calls fail silently.\n" +" Callable callable = new Callable(this, MethodName.PrintArgs);\n" +" callable.Call(\"hello\", \"world\"); // Default parameter values are not " +"supported, should have 3 arguments.\n" +" callable.Call(Vector2.Up, 42, callable); // Prints \"(0, -1) 42 Node(Node." +"cs)::PrintArgs\"\n" +" callable.Call(\"invalid\"); // Invalid call, should have 3 arguments.\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"In GDScript, it's possible to create lambda functions within a method. Lambda " +"functions are custom callables that are not associated with an [Object] " +"instance. Optionally, lambda functions can also be named. The name will be " +"displayed in the debugger, or when calling [method get_method].\n" +"[codeblock]\n" +"func _init():\n" +" var my_lambda = func (message):\n" +" print(message)\n" +"\n" +" # Prints \"Hello everyone!\"\n" +" my_lambda.call(\"Hello everyone!\")\n" +"\n" +" # Prints \"Attack!\", when the button_pressed signal is emitted.\n" +" button_pressed.connect(func(): print(\"Attack!\"))\n" +"[/codeblock]\n" +"In GDScript, you can access methods and global functions as [Callable]s:\n" +"[codeblock]\n" +"tween.tween_callback(node.queue_free) # Object methods.\n" +"tween.tween_callback(array.clear) # Methods of built-in types.\n" +"tween.tween_callback(print.bind(\"Test\")) # Global functions.\n" +"[/codeblock]\n" +"[b]Note:[/b] [Dictionary] does not support the above due to ambiguity with " +"keys.\n" +"[codeblock]\n" +"var dictionary = {\"hello\": \"world\"}\n" +"\n" +"# This will not work, `clear` is treated as a key.\n" +"tween.tween_callback(dictionary.clear)\n" +"\n" +"# This will work.\n" +"tween.tween_callback(Callable.create(dictionary, \"clear\"))\n" +"[/codeblock]" +msgstr "" +"Il [Callable] (chiamabile) è un tipo di [Variant] incorporato che rappresenta " +"una funzione. Può essere un metodo all'interno di un'istanza di [Object] o un " +"chiamabile personalizzato utilizzato per diversi scopi (vedi [method " +"is_custom]). Come tutti i tipi di [Variant], può essere memorizzato in " +"variabili e passato ad altre funzioni. È più comunemente usato per le " +"richiamate di segnale.\n" +"[codeblocks]\n" +"[gdscript]\n" +"func print_args(arg1, arg2, arg3 = \"\"):\n" +" prints(arg1, arg2, arg3)\n" +"\n" +"func test():\n" +" var callable = Callable(self, \"print_args\")\n" +" callable.call(\"ciao\", \"mondo\") # Stampa \"ciao modo\".\n" +" callable.call(Vector2.UP, 42, callable) # Stampa \"(0.0, -1.0) 42 " +"Node(node.gd)::print_args\"\n" +" callable.call(\"invalid\") # Chiamata non valida, deve avere almeno 2 " +"argomenti.\n" +"[/gdscript]\n" +"[csharp]\n" +"// I valori predefiniti dei parametri non sono supportati\n" +"public void PrintArgs(Variant arg1, Variant arg2, Variant arg3 = default)\n" +"{\n" +" GD.PrintS(arg1, arg2, arg3);\n" +"}\n" +"\n" +"public void Test()\n" +"{\n" +" // Le chiamate non valide falliscono silenziosamente.\n" +" Callable callable = new Callable(this, MethodName.PrintArgs);\n" +" callable.Call(\"ciao\", \"mondo\"); // I valori predefiniti dei parametri " +"non sono supportati, deve avere 3 argomenti.\n" +" callable.Call(Vector2.Up, 42, callable); // Stampa \"(0, -1) 42 Node(Node." +"cs)::PrintArgs\"\n" +" callable.Call(\"invalid\"); // Chiamata non valida, deve avere 3 " +"argomenti.\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"In GDScript è possibile creare funzioni lambda all'interno di un metodo. Le " +"funzioni lambda sono chiamabili personalizzati che non sono associati a " +"un'istanza di [Object]. Facoltativamente, è possibile nominare anche le " +"funzioni lambda. Il nome sarà visualizzato nel debugger o quando si chiama " +"[method get_method].\n" +"[codeblock]\n" +"func _init():\n" +" var my_lambda = func (message):\n" +" print(message)\n" +"\n" +" # Stampa \"Ciao a tutti!\"\n" +" my_lambda.call(\"Ciao a tutti!\")\n" +"\n" +" # Stampa \"Attacca!\", quando il segnale button_pressed viene emesso.\n" +" button_pressed.connect(func(): print(\"Attacca!\"))\n" +"[/codeblock]\n" +"In GDScript, è possibile accedere a metodi e funzioni globali come " +"[Callable]:\n" +"[codeblock]\n" +"tween.tween_callback(node.queue_free) # Metodi di Object.\n" +"tween.tween_callback(array.clear) # Metodi di tipi integrati.\n" +"tween.tween_callback(print.bind(\"Test\")) # Funzioni globali.\n" +"[/codeblock]\n" +"[b]Nota:[/b] [Dictionary] non supporta quanto descritto sopra a causa " +"dell'ambiguità con le chiavi.\n" +"[codeblock]\n" +"var dictionary = {\"hello\": \"world\"}\n" +"\n" +"# Questo non funzionerà, `clear` è trattato come chiave.\n" +"tween.tween_callback(dictionary.clear)\n" +"\n" +"# Questo funzionerà.\n" +"tween.tween_callback(Callable.create(dictionary, \"clear\"))\n" +"[/codeblock]" + msgid "Constructs an empty [Callable], with no object nor method bound." msgstr "Costruisce un [Callable] vuoto, senza oggetto né metodo associato." @@ -18048,6 +25079,48 @@ msgstr "" "qualsiasi argomento disassociato con [method unbind] è [i]aggiunto[/i] al " "risultato." +msgid "" +"Returns the array of arguments bound via successive [method bind] or [method " +"unbind] calls. These arguments will be added [i]after[/i] the arguments " +"passed to the call, from which [method get_unbound_arguments_count] arguments " +"on the right have been previously excluded.\n" +"[codeblock]\n" +"func get_effective_arguments(callable, call_args):\n" +" assert(call_args.size() - callable.get_unbound_arguments_count() >= 0)\n" +" var result = call_args.slice(0, call_args.size() - callable." +"get_unbound_arguments_count())\n" +" result.append_array(callable.get_bound_arguments())\n" +" return result\n" +"[/codeblock]" +msgstr "" +"Restituisce l'array di argomenti associati tramite successive chiamate a " +"[method bind] o [method unbind]. Questi argomenti saranno aggiunti [i]dopo[/" +"i] gli argomenti passati alla chiamata, da cui il numero restituito di " +"argomenti da [method get_unbound_arguments_count] sulla destra sono stati " +"precedentemente esclusi.\n" +"[codeblock]\n" +"func get_effective_arguments(callable, call_args):\n" +" assert(call_args.size() - callable.get_unbound_arguments_count() >= 0)\n" +" var result = call_args.slice(0, call_args.size() - callable." +"get_unbound_arguments_count())\n" +" result.append_array(callable.get_bound_arguments())\n" +" return result\n" +"[/codeblock]" + +msgid "" +"Returns the total amount of arguments bound via successive [method bind] or " +"[method unbind] calls. This is the same as the size of the array returned by " +"[method get_bound_arguments]. See [method get_bound_arguments] for details.\n" +"[b]Note:[/b] The [method get_bound_arguments_count] and [method " +"get_unbound_arguments_count] methods can both return positive values." +msgstr "" +"Restituisce la quantità totale di argomenti associati tramite successive " +"chiamate a [method bind] o [method unbind]. È la stessa dimensione dell'array " +"restituito da [method get_bound_arguments]. Vedi [method get_bound_arguments] " +"per i dettagli.\n" +"[b]Nota:[/b] I metodi [method get_bound_arguments_count] e [method " +"get_unbound_arguments_count] possono entrambi restituire valori positivi." + msgid "" "Returns the name of the method represented by this [Callable]. If the " "callable is a GDScript lambda function, returns the function's name or " @@ -18067,6 +25140,18 @@ msgstr "" "Restituisce l'ID dell'oggetto di questo [Callable] (vedi [method Object." "get_instance_id])." +msgid "" +"Returns the total amount of arguments unbound via successive [method bind] or " +"[method unbind] calls. See [method get_bound_arguments] for details.\n" +"[b]Note:[/b] The [method get_bound_arguments_count] and [method " +"get_unbound_arguments_count] methods can both return positive values." +msgstr "" +"Restituisce la quantità totale di argomenti disassociati tramite chiamate " +"successive a [method bind] o [method unbind]. Vedi [method " +"get_bound_arguments] per i dettagli.\n" +"[b]Note:[/b] I metodi [method get_bound_arguments_count] e [method " +"get_unbound_arguments_count] possono entrambi restituire valori positivi." + msgid "" "Returns the 32-bit hash value of this [Callable]'s object.\n" "[b]Note:[/b] [Callable]s with equal content will always produce identical " @@ -18100,6 +25185,19 @@ msgstr "" "- per rappresentare funzioni globali, lambda, e RPC in GDScript;\n" "- per altri scopi nel core, GDExtension, e C#." +msgid "" +"Returns [code]true[/code] if this [Callable] has no target to call the method " +"on. Equivalent to [code]callable == Callable()[/code].\n" +"[b]Note:[/b] This is [i]not[/i] the same as [code]not is_valid()[/code] and " +"using [code]not is_null()[/code] will [i]not[/i] guarantee that this callable " +"can be called. Use [method is_valid] instead." +msgstr "" +"Restituisce [code]true[/code] se questo [Callable] non ha una destinazione su " +"cui chiamare il metodo. Equivale a [code]callable == Callable()[/code].\n" +"[b]Nota:[/b] Questo [i]non[/i] è lo stesso di [code]not is_valid()[/code] e " +"usare [code]not is_null()[/code] [i]non[/i] garantirà che questo chiamabile " +"possa essere chiamato. Usa invece [method is_valid]." + msgid "" "Returns [code]true[/code] if this [Callable] is a standard callable. This " "method is the opposite of [method is_custom]. Returns [code]false[/code] if " @@ -18193,9 +25291,80 @@ msgstr "" msgid "Calls the specified method after optional delay." msgstr "Richiama il metodo specificato dopo un ritardo facoltativo." +msgid "" +"[CallbackTweener] is used to call a method in a tweening sequence. See " +"[method Tween.tween_callback] for more usage information.\n" +"The tweener will finish automatically if the callback's target object is " +"freed.\n" +"[b]Note:[/b] [method Tween.tween_callback] is the only correct way to create " +"[CallbackTweener]. Any [CallbackTweener] created manually will not function " +"correctly." +msgstr "" +"[CallbackTweener] è utilizzato per chiamare un metodo in una sequenza di " +"tweening. Vedi [method Tween.tween_callback] per maggiori informazioni " +"sull'utilizzo.\n" +"Il tweener terminerà automaticamente se l'oggetto di destinazione del " +"callback viene liberato.\n" +"[b]Nota:[/b] [method Tween.tween_callback] è l'unico modo corretto per creare " +"[CallbackTweener]. Qualsiasi [CallbackTweener] creato manualmente non " +"funzionerà correttamente." + +msgid "" +"Makes the callback call delayed by given time in seconds.\n" +"[b]Example:[/b] Call [method Node.queue_free] after 2 seconds:\n" +"[codeblock]\n" +"var tween = get_tree().create_tween()\n" +"tween.tween_callback(queue_free).set_delay(2)\n" +"[/codeblock]" +msgstr "" +"Ritarda la chiamata del callback di un tempo specificato in secondi.\n" +"[b]Esempio:[/b] Chiama [method Node.queue_free] dopo 2 secondi:\n" +"[codeblock]\n" +"var tween = get_tree().create_tween()\n" +"tween.tween_callback(queue_free).set_delay(2)\n" +"[/codeblock]" + msgid "Camera node for 2D scenes." msgstr "Nodo di telecamera per le scene in 2D." +msgid "" +"Camera node for 2D scenes. It forces the screen (current layer) to scroll " +"following this node. This makes it easier (and faster) to program scrollable " +"scenes than manually changing the position of [CanvasItem]-based nodes.\n" +"Cameras register themselves in the nearest [Viewport] node (when ascending " +"the tree). Only one camera can be active per viewport. If no viewport is " +"available ascending the tree, the camera will register in the global " +"viewport.\n" +"This node is intended to be a simple helper to get things going quickly, but " +"more functionality may be desired to change how the camera works. To make " +"your own custom camera node, inherit it from [Node2D] and change the " +"transform of the canvas by setting [member Viewport.canvas_transform] in " +"[Viewport] (you can obtain the current [Viewport] by using [method Node." +"get_viewport]).\n" +"Note that the [Camera2D] node's [code]position[/code] doesn't represent the " +"actual position of the screen, which may differ due to applied smoothing or " +"limits. You can use [method get_screen_center_position] to get the real " +"position." +msgstr "" +"Nodo telecamera per le scene 2D. Forza lo schermo (livello attuale) a " +"scorrere seguendo questo nodo. Ciò rende più facile (e veloce) programmare " +"scene scorrevoli rispetto alla modifica manuale della posizione dei nodi " +"basati su [CanvasItem].\n" +"Le telecamere si registrano nel nodo [Viewport] più vicino (quando si sale " +"nell'albero). Solo una telecamera può essere attiva per ogni viewport. Se non " +"è disponibile alcuna viewport salendo nell'albero, la telecamera si " +"registrerà nella viewport globale.\n" +"Questo nodo è pensato come aiuto per far funzionare le cose rapidamente, ma " +"potrebbero essere desiderate più funzionalità per cambiare il modo in cui " +"funziona la telecamera. Per creare il tuo nodo telecamera personalizzato, " +"ereditalo da [Node2D] e modifica la trasformazione del canvas impostando " +"[member Viewport.canvas_transform] in [Viewport] (puoi ottenere la [Viewport] " +"attuale tramite [method Node.get_viewport]).\n" +"Nota che la [code]position[/code] del nodo [Camera2D] non rappresenta la " +"posizione effettiva dello schermo, che potrebbe differire a causa di " +"attenuazioni o limiti applicati. Puoi usare [method " +"get_screen_center_position] per ottenere la posizione reale." + msgid "2D Isometric Demo" msgstr "Demo isometrica 2D" @@ -18300,7 +25469,7 @@ msgid "" "or not a [Viewport], uses the default viewport instead." msgstr "" "Il nodo [Viewport] personalizzato associato alla [Camera2D]. Se [code]null[/" -"code] o non è un [Viewport], utilizza invece il viewport predefinito." +"code] o non è una [Viewport], utilizza invece la viewport predefinita." msgid "" "Bottom margin needed to drag the camera. A value of [code]1[/code] makes the " @@ -18320,6 +25489,21 @@ msgstr "" "telecamera si sposta orizzontalmente a prescindere dai margini di " "trascinamento." +msgid "" +"The relative horizontal drag offset of the camera between the right " +"([code]-1[/code]) and left ([code]1[/code]) drag margins.\n" +"[b]Note:[/b] Used to set the initial horizontal drag offset; determine the " +"current offset; or force the current offset. It's not automatically updated " +"when [member drag_horizontal_enabled] is [code]true[/code] or the drag " +"margins are changed." +msgstr "" +"Offset di trascinamento orizzontale relativo della telecamera tra i margini " +"di trascinamento destro ([code]-1[/code]) e sinistro ([code]1[/code]).\n" +"[b]Nota:[/b] Utilizzato per impostare l'offset di trascinamento orizzontale " +"iniziale; determinare l'offset attuale; o forzare l'offset attuale. Non viene " +"aggiornato automaticamente quando [member drag_horizontal_enabled] è " +"[code]true[/code] o i margini di trascinamento vengono modificati." + msgid "" "Left margin needed to drag the camera. A value of [code]1[/code] makes the " "camera move only when reaching the left edge of the screen." @@ -18353,6 +25537,21 @@ msgstr "" "di trascinamento verticali (sopra e sotto). Se [code]false[/code], la " "telecamera si sposta verticalmente a prescindere dai margini di trascinamento." +msgid "" +"The relative vertical drag offset of the camera between the bottom ([code]-1[/" +"code]) and top ([code]1[/code]) drag margins.\n" +"[b]Note:[/b] Used to set the initial vertical drag offset; determine the " +"current offset; or force the current offset. It's not automatically updated " +"when [member drag_vertical_enabled] is [code]true[/code] or the drag margins " +"are changed." +msgstr "" +"Offset di trascinamento verticale relativo della telecamera tra i margini di " +"trascinamento inferiore ([code]-1[/code]) e superiore ([code]1[/code]).\n" +"[b]Nota:[/b] Utilizzato per impostare l'offset di trascinamento verticale " +"iniziale; determinare l'offset attuale; o forzare l'offset attuale. Non viene " +"aggiornato automaticamente quando [member drag_vertical_enabled] è " +"[code]true[/code] o i margini di trascinamento vengono modificati." + msgid "" "If [code]true[/code], draws the camera's drag margin rectangle in the editor." msgstr "" @@ -18471,6 +25670,59 @@ msgid "The camera's process callback. See [enum Camera2DProcessCallback]." msgstr "" "Il processo di callback della telecamera. Vedi [enum Camera2DProcessCallback]." +msgid "" +"If [code]true[/code], the camera's view smoothly rotates, via asymptotic " +"smoothing, to align with its target rotation at [member " +"rotation_smoothing_speed].\n" +"[b]Note:[/b] This property has no effect if [member ignore_rotation] is " +"[code]true[/code]." +msgstr "" +"Se [code]true[/code], la visuale della telecamera ruota dolcemente, tramite " +"attenuazione asintotica, per allinearsi con la rotazione di destinazione a " +"[member rotation_smoothing_speed].\n" +"[b]Nota:[/b] Questa proprietà non ha effetto se [member ignore_rotation] è " +"[code]true[/code]." + +msgid "" +"The angular, asymptotic speed of the camera's rotation smoothing effect when " +"[member rotation_smoothing_enabled] is [code]true[/code]." +msgstr "" +"Velocità angolare asintotica dell'effetto di attenuazione della rotazione " +"della telecamera quando [member rotation_smoothing_enabled] è [code]true[/" +"code]." + +msgid "" +"The camera's zoom. A zoom of [code]Vector(2, 2)[/code] doubles the size seen " +"in the viewport. A zoom of [code]Vector(0.5, 0.5)[/code] halves the size seen " +"in the viewport.\n" +"[b]Note:[/b] [member FontFile.oversampling] does [i]not[/i] take [Camera2D] " +"zoom into account. This means that zooming in/out will cause bitmap fonts and " +"rasterized (non-MSDF) dynamic fonts to appear blurry or pixelated unless the " +"font is part of a [CanvasLayer] that makes it ignore camera zoom. To ensure " +"text remains crisp regardless of zoom, you can enable MSDF font rendering by " +"enabling [member ProjectSettings.gui/theme/" +"default_font_multichannel_signed_distance_field] (applies to the default " +"project font only), or enabling [b]Multichannel Signed Distance Field[/b] in " +"the import options of a DynamicFont for custom fonts. On system fonts, " +"[member SystemFont.multichannel_signed_distance_field] can be enabled in the " +"inspector." +msgstr "" +"Lo zoom della telecamera. Uno zoom di [code]Vector(2, 2)[/code] raddoppia la " +"dimensione visualizzata nella viewport. Uno zoom di [code]Vector(0.5, 0.5)[/" +"code] dimezza la dimensione visualizzata nella viewport.\n" +"[b]Nota:[/b] [member FontFile.oversampling] [i]non[/i] prende in " +"considerazione lo zoom della [Camera2D]. Ciò significa che lo zoom in avanti/" +"indietro farà in modo che i font bitmap e i font dinamici rasterizzati (non " +"MSDF) appaiano sfocati o pixelati, a meno che il font non faccia parte di un " +"[CanvasLayer] che gli fa ignorare lo zoom della telecamera. Per garantire che " +"il testo rimanga nitido a prescindere dallo zoom, è possibile abilitare il " +"rendering dei font MSDF abilitando [member ProjectSettings.gui/theme/" +"default_font_multichannel_signed_distance_field] (si applica solo al font " +"predefinito del progetto) o abilitando [b]Multichannel Signed Distance Field[/" +"b] nelle opzioni di importazione di un DynamicFont per i font personalizzati. " +"Sui font di sistema, [member SystemFont.multichannel_signed_distance_field] " +"può essere abilitato nell'ispettore." + msgid "" "The camera's position is fixed so that the top-left corner is always at the " "origin." @@ -18610,7 +25862,7 @@ msgid "" "description). If the camera node is outside the scene tree, it will attempt " "to become current once it's added." msgstr "" -"Rende questa telecamera la telecamera attuale per il [Viewport] (vedi la " +"Rende questa telecamera la telecamera attuale per la [Viewport] (vedi la " "descrizione della classe). Se il nodo telecamera non è all'interno " "dell'albero di scene, tenterà di diventare attuale una volta aggiunto." @@ -18640,7 +25892,7 @@ msgid "" "intersection or picking." msgstr "" "Restituisce un vettore normale nello spazio mondiale, ottenuto proiettando un " -"punto sul rettangolo del [Viewport] mediante la proiezione inversa della " +"punto sul rettangolo della [Viewport] mediante la proiezione inversa della " "telecamera. Ciò è utile per proiettare raggi sotto forma di (origine, " "normale) per l'intersezione o la selezione di oggetti." @@ -18651,7 +25903,7 @@ msgid "" "intersection or picking." msgstr "" "Restituisce una posizione 3D nello spazio mondiale, ottenuto proiettando un " -"punto sul rettangolo del [Viewport] mediante la proiezione inversa della " +"punto sul rettangolo della [Viewport] mediante la proiezione inversa della " "telecamera. Ciò è utile per proiettare raggi sotto forma di (origine, " "normale) per l'intersezione o la selezione di oggetti." @@ -18711,10 +25963,10 @@ msgid "" "unproject_position(global_transform.origin)\n" "[/codeblock]" msgstr "" -"Restituisce le coordinate 2D nel rettangolo del [Viewport] che mappa al punto " -"3D specificato in spazio mondiale.\n" +"Restituisce le coordinate 2D nel rettangolo della [Viewport] che mappa al " +"punto 3D specificato in spazio mondiale.\n" "[b]Nota:[/b] Quando si usa per posizionare gli elementi della GUI su una " -"vista 3D, usa [method is_position_behind] per evitare che appaiano se il " +"viewport 3D, usa [method is_position_behind] per evitare che appaiano se il " "punto 3D è dietro la telecamera:\n" "[codeblock]\n" "# Questo blocco di codice fa parte di uno script che eredita da Node3D.\n" @@ -18775,7 +26027,7 @@ msgid "" "current, setting one camera's [member current] to [code]false[/code] will " "cause the other camera to be made current." msgstr "" -"Se [code]true[/code], il [Viewport] antenato sta attualmente usando questa " +"Se [code]true[/code], la [Viewport] antenato sta attualmente usando questa " "telecamera.\n" "Se nella scena sono presenti più telecamere, una diventerà sempre attuale. Ad " "esempio, se nella scena sono presenti due nodi [Camera3D] e solo uno è " @@ -18962,6 +26214,32 @@ msgstr "" msgid "Parent class for camera settings." msgstr "Classe genitore per le impostazioni della telecamera." +msgid "" +"Controls camera-specific attributes such as depth of field and exposure " +"override.\n" +"When used in a [WorldEnvironment] it provides default settings for exposure, " +"auto-exposure, and depth of field that will be used by all cameras without " +"their own [CameraAttributes], including the editor camera. When used in a " +"[Camera3D] it will override any [CameraAttributes] set in the " +"[WorldEnvironment]. When used in [VoxelGI] or [LightmapGI], only the exposure " +"settings will be used.\n" +"See also [Environment] for general 3D environment settings.\n" +"This is a pure virtual class that is inherited by [CameraAttributesPhysical] " +"and [CameraAttributesPractical]." +msgstr "" +"Controlla gli attributi specifici della telecamera, come la profondità di " +"campo e la sostituzione dell'esposizione.\n" +"Quando è utilizzato in un [WorldEnvironment], fornisce impostazioni " +"predefinite per l'esposizione, l'esposizione automatica e la profondità di " +"campo che saranno utilizzate da tutte le telecamere senza i propri " +"[CameraAttributes], inclusa la telecamera dell'editor. Quando è utilizzato in " +"un [Camera3D], sostituirà qualsiasi [CameraAttributes] impostato nel " +"[WorldEnvironment]. Quando è utilizzato in [VoxelGI] o [LightmapGI], solo le " +"impostazioni di esposizione saranno utilizzate.\n" +"Vedi anche [Environment] per le impostazioni generali dell'ambiente 3D.\n" +"Questa è una classe puramente virtuale ereditata da " +"[CameraAttributesPhysical] e [CameraAttributesPractical]." + msgid "" "If [code]true[/code], enables the tonemapping auto exposure mode of the scene " "renderer. If [code]true[/code], the renderer will automatically determine the " @@ -18992,9 +26270,63 @@ msgstr "" "Moltiplicatore per la quantità di esposizione. Un valore più alto produce " "un'immagine più luminosa." +msgid "" +"Sensitivity of camera sensors, measured in ISO. A higher sensitivity results " +"in a brighter image.\n" +"If [member auto_exposure_enabled] is [code]true[/code], this can be used as a " +"method of exposure compensation, doubling the value will increase the " +"exposure value (measured in EV100) by 1 stop.\n" +"[b]Note:[/b] Only available when [member ProjectSettings.rendering/" +"lights_and_shadows/use_physical_light_units] is enabled." +msgstr "" +"Sensibilità dei sensori della telecamera, misurata in ISO. Una sensibilità " +"più elevata produce un'immagine più luminosa.\n" +"Se [member auto_exposure_enabled] è [code]true[/code], questo può essere " +"utilizzato come modo di compensazione dell'esposizione, raddoppiando il " +"valore si aumenterà il valore dell'esposizione (misurato in EV100) di 1 " +"stop.\n" +"[b]Nota:[/b] Disponibile solo quando [member ProjectSettings.rendering/" +"lights_and_shadows/use_physical_light_units] è abilitato." + msgid "Physically-based camera settings." msgstr "Impostazioni di telecamera basate sulla fisica." +msgid "" +"[CameraAttributesPhysical] is used to set rendering settings based on a " +"physically-based camera's settings. It is responsible for exposure, auto-" +"exposure, and depth of field.\n" +"When used in a [WorldEnvironment] it provides default settings for exposure, " +"auto-exposure, and depth of field that will be used by all cameras without " +"their own [CameraAttributes], including the editor camera. When used in a " +"[Camera3D] it will override any [CameraAttributes] set in the " +"[WorldEnvironment] and will override the [Camera3D]s [member Camera3D.far], " +"[member Camera3D.near], [member Camera3D.fov], and [member Camera3D." +"keep_aspect] properties. When used in [VoxelGI] or [LightmapGI], only the " +"exposure settings will be used.\n" +"The default settings are intended for use in an outdoor environment, tips for " +"settings for use in an indoor environment can be found in each setting's " +"documentation.\n" +"[b]Note:[/b] Depth of field blur is only supported in the Forward+ and Mobile " +"rendering methods, not Compatibility." +msgstr "" +"[CameraAttributesPhysical] è utilizzato per impostare le impostazioni di " +"rendering, in base alle impostazioni di una fotocamera reale. È responsabile " +"dell'esposizione, dell'esposizione automatica e della profondità di campo.\n" +"Quando è utilizzato in un [WorldEnvironment], fornisce impostazioni " +"predefinite per l'esposizione, l'esposizione automatica e la profondità di " +"campo che saranno utilizzate da tutte le telecamere senza i propri " +"[CameraAttributes], inclusa la telecamera dell'editor. Quando è utilizzato in " +"un [Camera3D], sostituirà qualsiasi [CameraAttributes] impostato nel " +"[WorldEnvironment] e sostituirà le proprietà [member Camera3D.far], [member " +"Camera3D.near], [member Camera3D.fov] e [member Camera3D.keep_aspect] del " +"[Camera3D]. Quando è utilizzato in [VoxelGI] o [LightmapGI], solo le " +"impostazioni di esposizione saranno utilizzate.\n" +"Le impostazioni predefinite sono pensate per l'uso in un ambiente esterno, ma " +"nella documentazione di ciascuna impostazione è possibile trovare ulteriori " +"suggerimenti per l'uso in un ambiente interno.\n" +"[b]Nota:[/b] La sfocatura della profondità di campo è supportata solo nei " +"metodi di rendering Forward+ e Mobile, non in Compatibilità." + msgid "Physical light and camera units" msgstr "Luce fisica e unità di telecamera" @@ -19019,6 +26351,18 @@ msgstr "" "automatica al di sotto di una certa luminosità, risultando in un punto di " "interruzione in cui la scena rimarrà luminosa." +msgid "" +"The minimum luminance (in EV100) used when calculating auto exposure. When " +"calculating scene average luminance, color values will be clamped to at least " +"this value. This limits the auto-exposure from exposing above a certain " +"brightness, resulting in a cut off point where the scene will remain dark." +msgstr "" +"La luminanza minima (in EV100) utilizzata per il calcolo dell'esposizione " +"automatica. Quando si calcola la luminanza media della scena, i valori del " +"colore saranno limitati almeno a questo valore. Ciò limita l'esposizione " +"automatica al di sopra di una certa luminosità, risultando in un punto di " +"taglio in cui la scena rimarrà scura." + msgid "" "Size of the aperture of the camera, measured in f-stops. An f-stop is a " "unitless ratio between the focal length of the camera and the diameter of the " @@ -19110,6 +26454,26 @@ msgstr "" msgid "Camera settings in an easy to use format." msgstr "Impostazioni della telecamera in un formato facile da usare." +msgid "" +"Controls camera-specific attributes such as auto-exposure, depth of field, " +"and exposure override.\n" +"When used in a [WorldEnvironment] it provides default settings for exposure, " +"auto-exposure, and depth of field that will be used by all cameras without " +"their own [CameraAttributes], including the editor camera. When used in a " +"[Camera3D] it will override any [CameraAttributes] set in the " +"[WorldEnvironment]. When used in [VoxelGI] or [LightmapGI], only the exposure " +"settings will be used." +msgstr "" +"Controlla gli attributi specifici della telecamera come l'esposizione " +"automatica, la profondità di campo e la sostituzione dell'esposizione.\n" +"Quando è utilizzato in un [WorldEnvironment], fornisce impostazioni " +"predefinite per l'esposizione, l'esposizione automatica e la profondità di " +"campo che saranno utilizzate da tutte le telecamere senza i propri " +"[CameraAttributes], inclusa la telecamera dell'editor. Quando è utilizzato in " +"un [Camera3D], sostituirà qualsiasi [CameraAttributes] impostato nel " +"[WorldEnvironment]. Quando è utilizzato in [VoxelGI] o [LightmapGI], solo le " +"impostazioni di esposizione saranno utilizzate." + msgid "" "The maximum sensitivity (in ISO) used when calculating auto exposure. When " "calculating scene average luminance, color values will be clamped to at least " @@ -19222,6 +26586,39 @@ msgstr "" "Un feed della telecamera ti dà accesso a una singola telecamera fisica " "collegata al tuo dispositivo." +msgid "" +"A camera feed gives you access to a single physical camera attached to your " +"device. When enabled, Godot will start capturing frames from the camera which " +"can then be used. See also [CameraServer].\n" +"[b]Note:[/b] Many cameras will return YCbCr images which are split into two " +"textures and need to be combined in a shader. Godot does this automatically " +"for you if you set the environment to show the camera image in the " +"background.\n" +"[b]Note:[/b] This class is currently only implemented on Linux, macOS, and " +"iOS. On other platforms no [CameraFeed]s will be available. To get a " +"[CameraFeed] on iOS, the camera plugin from [url=https://github.com/" +"godotengine/godot-ios-plugins]godot-ios-plugins[/url] is required." +msgstr "" +"Un feed di fotocamera ti dà accesso a una singola fotocamera fisica collegata " +"al tuo dispositivo. Quando abilitato, Godot inizierà a catturare fotogrammi " +"dalla fotocamera che potranno quindi essere utilizzati. Vedi anche " +"[CameraServer].\n" +"[b]Nota:[/b] Molte fotocamere restituiscono immagini in YCbCr che sono divise " +"in due texture e che devono essere combinate in uno shader. Godot fa ciò " +"automaticamente se l'ambiente è impostato per mostrare l'immagine della " +"fotocamera nello sfondo.\n" +"[b]Nota:[/b] Questa classe è attualmente implementata solo su Linux, macOS e " +"iOS. Su altre piattaforme i [CameraFeed] non saranno disponibili. Per " +"ottenere un [CameraFeed] su iOS, è necessaria l'estensione della fotocamera " +"da [url=https://github.com/godotengine/godot-ios-plugins]godot-ios-plugins[/" +"url]." + +msgid "Called when the camera feed is activated." +msgstr "Chiamato quando il feed della fotocamera viene attivato." + +msgid "Called when the camera feed is deactivated." +msgstr "Chiamato quando il feed della fotocamera viene disattivato." + msgid "Returns feed image data type." msgstr "Restituisce il tipo di dati dell'immagine del feed." @@ -19234,12 +26631,117 @@ msgstr "Restituisce il nome della fotocamera." msgid "Returns the position of camera on the device." msgstr "Restituisce la posizione della fotocamera sul dispositivo." +msgid "" +"Returns the texture backend ID (usable by some external libraries that need a " +"handle to a texture to write data)." +msgstr "" +"Restituisce l'ID backend della texture (utilizzabile da alcune librerie " +"esterne che necessitano di un gestore per una texture per scrivere dati)." + +msgid "Sets the feed as external feed provided by another library." +msgstr "Imposta il feed come feed esterno fornito da un'altra libreria." + +msgid "" +"Sets the feed format parameters for the given index in the [member formats] " +"array. Returns [code]true[/code] on success. By default YUYV encoded stream " +"is transformed to FEED_RGB. YUYV encoded stream output format can be changed " +"with [param parameters].output value:\n" +"[code]separate[/code] will result in FEED_YCBCR_SEP\n" +"[code]grayscale[/code] will result in desaturated FEED_RGB\n" +"[code]copy[/code] will result in FEED_YCBCR" +msgstr "" +"Imposta i parametri del formato feed per l'indice specificato nell'array " +"[member formats]. Restituisce [code]true[/code] in caso di successo. Come " +"predefinito, il flusso codificato YUYV viene trasformato in FEED_RGB. Il " +"formato di output del flusso codificato YUYV può essere modificato con il " +"valore [param parametri].output:\n" +"[code]separate[/code] produrrà FEED_YCBCR_SEP\n" +"[code]grayscale[/code] produrrà FEED_RGB desaturato\n" +"[code]copy[/code] produrrà FEED_YCBCR" + +msgid "Sets the camera's name." +msgstr "Imposta il nome della fotocamera." + +msgid "Sets the position of this camera." +msgstr "Imposta la posizione di questa fotocamera." + +msgid "Sets RGB image for this feed." +msgstr "Imposta l'immagine RGB per questo feed." + +msgid "Sets YCbCr image for this feed." +msgstr "Imposta l'immagine YCbCr per questo feed." + msgid "If [code]true[/code], the feed is active." msgstr "Se [code]true[/code], il feed è attivo." +msgid "The transform applied to the camera's image." +msgstr "La trasformazione applicata all'immagine della fotocamera." + +msgid "" +"Formats supported by the feed. Each entry is a [Dictionary] describing format " +"parameters." +msgstr "" +"Formati supportati dal feed. Ogni voce è un [Dictionary] che descrive i " +"parametri del formato." + +msgid "Emitted when the format has changed." +msgstr "Emesso quando il formato è cambiato." + +msgid "Emitted when a new frame is available." +msgstr "Emesso quando un nuovo fotogramma è disponibile." + +msgid "No image set for the feed." +msgstr "Nessuna immagine impostata per il feed." + +msgid "Feed supplies RGB images." +msgstr "Il feed fornisce immagini nel formato RGB." + +msgid "Feed supplies YCbCr images that need to be converted to RGB." +msgstr "" +"Il feed fornisce immagini nel formato YCbCr che devono essere convertite in " +"RGB." + +msgid "" +"Feed supplies separate Y and CbCr images that need to be combined and " +"converted to RGB." +msgstr "" +"Il feed fornisce immagini nel formato Y e CbCr separate che devono essere " +"combinate e convertite in RGB." + +msgid "Feed supplies external image." +msgstr "Il feed fornisce un'immagine esterna." + msgid "Unspecified position." msgstr "Posizione non specificata." +msgid "Camera is mounted at the front of the device." +msgstr "La fotocamera è montata in avanti al dispositivo." + +msgid "Camera is mounted at the back of the device." +msgstr "La fotocamera è montata sul retro del dispositivo." + +msgid "Server keeping track of different cameras accessible in Godot." +msgstr "Server che tiene traccia delle diverse fotocamere accessibili in Godot." + +msgid "" +"The [CameraServer] keeps track of different cameras accessible in Godot. " +"These are external cameras such as webcams or the cameras on your phone.\n" +"It is notably used to provide AR modules with a video feed from the camera.\n" +"[b]Note:[/b] This class is currently only implemented on Linux, macOS, and " +"iOS. On other platforms no [CameraFeed]s will be available. To get a " +"[CameraFeed] on iOS, the camera plugin from [url=https://github.com/" +"godotengine/godot-ios-plugins]godot-ios-plugins[/url] is required." +msgstr "" +"Il [CameraServer] tiene traccia delle diverse fotocamere accessibili in " +"Godot. Si tratta di fotocamere esterne come webcam o fotocamere sul tuo " +"telefono.\n" +"Viene utilizzato in particolare per fornire ai moduli AR un feed video dalla " +"fotocamera.\n" +"[b]Nota:[/b] Questa classe è attualmente implementata solo su Linux, macOS e " +"iOS. Su altre piattaforme non saranno disponibili [CameraFeed]. Per ottenere " +"un [CameraFeed] su iOS, è richiesto il plugin della telecamera da " +"[url=https://github.com/godotengine/godot-ios-plugins]godot-ios-plugins[/url]." + msgid "Adds the camera [param feed] to the camera server." msgstr "Aggiunge il [param feed] di fotocamera al server di telecamera." @@ -19269,6 +26771,20 @@ msgstr "" "Emesso quando un [CameraFeed] viene rimosso (ad esempio una webcam è " "scollegata)." +msgid "The RGBA camera image." +msgstr "L'immagine nel formato RGBA della fotocamera." + +msgid "The [url=https://en.wikipedia.org/wiki/YCbCr]YCbCr[/url] camera image." +msgstr "" +"L'immagine nel formato [url=https://en.wikipedia.org/wiki/YCbCr]YCbCr[/url] " +"della fotocamera." + +msgid "The Y component camera image." +msgstr "Immagine del componente Y della fotocamera." + +msgid "The CbCr component camera image." +msgstr "Immagine del componente CbCr della fotocamera." + msgid "Texture provided by a [CameraFeed]." msgstr "Texture fornita da un [CameraFeed]." @@ -19303,6 +26819,115 @@ msgstr "" msgid "Merges several 2D nodes into a single draw operation." msgstr "Unisce vari nodi 2D in un'unica operazione di disegno." +msgid "" +"Child [CanvasItem] nodes of a [CanvasGroup] are drawn as a single object. It " +"allows to e.g. draw overlapping translucent 2D nodes without blending (set " +"[member CanvasItem.self_modulate] property of [CanvasGroup] to achieve this " +"effect).\n" +"[b]Note:[/b] The [CanvasGroup] uses a custom shader to read from the " +"backbuffer to draw its children. Assigning a [Material] to the [CanvasGroup] " +"overrides the builtin shader. To duplicate the behavior of the builtin shader " +"in a custom [Shader] use the following:\n" +"[codeblock]\n" +"shader_type canvas_item;\n" +"render_mode unshaded;\n" +"\n" +"uniform sampler2D screen_texture : hint_screen_texture, repeat_disable, " +"filter_nearest;\n" +"\n" +"void fragment() {\n" +" vec4 c = textureLod(screen_texture, SCREEN_UV, 0.0);\n" +"\n" +" if (c.a > 0.0001) {\n" +" c.rgb /= c.a;\n" +" }\n" +"\n" +" COLOR *= c;\n" +"}\n" +"[/codeblock]\n" +"[b]Note:[/b] Since [CanvasGroup] and [member CanvasItem.clip_children] both " +"utilize the backbuffer, children of a [CanvasGroup] who have their [member " +"CanvasItem.clip_children] set to anything other than [constant CanvasItem." +"CLIP_CHILDREN_DISABLED] will not function correctly." +msgstr "" +"I nodi [CanvasItem] figli di un [CanvasGroup] sono disegnati come un singolo " +"oggetto. Ciò consente, ad esempio, di disegnare nodi 2D traslucidi " +"sovrapposti senza fusione (imposta la proprietà [member CanvasItem." +"self_modulate] di [CanvasGroup] per ottenere questo effetto).\n" +"[b]Nota:[/b] Il [CanvasGroup] usa uno shader personalizzato per leggere dal " +"backbuffer per disegnare i suoi figli. L'assegnazione di un [Material] al " +"[CanvasGroup] sovrascrive lo shader integrato. Per duplicare il comportamento " +"dello shader integrato in uno [Shader] personalizzato, usa quanto segue:\n" +"[codeblock]\n" +"shader_type canvas_item;\n" +"render_mode unshaded;\n" +"\n" +"uniform sampler2D screen_texture : hint_screen_texture, repeat_disable, " +"filter_nearest;\n" +"\n" +"void fragment() {\n" +" vec4 c = textureLod(screen_texture, SCREEN_UV, 0.0);\n" +"\n" +" if (c.a > 0.0001) {\n" +" c.rgb /= c.a;\n" +" }\n" +"\n" +" COLOR *= c;\n" +"}\n" +"[/codeblock]\n" +"[b]Nota:[/b] Poiché [CanvasGroup] e [member CanvasItem.clip_children] " +"utilizzano entrambi il backbuffer, i figli di un [CanvasGroup] che hanno il " +"loro [member CanvasItem.clip_children] impostato su un valore diverso da " +"[constant CanvasItem.CLIP_CHILDREN_DISABLED] non funzioneranno correttamente." + +msgid "" +"Sets the size of the margin used to expand the clearing rect of this " +"[CanvasGroup]. This expands the area of the backbuffer that will be used by " +"the [CanvasGroup]. A smaller margin will reduce the area of the backbuffer " +"used which can increase performance, however if [member use_mipmaps] is " +"enabled, a small margin may result in mipmap errors at the edge of the " +"[CanvasGroup]. Accordingly, this should be left as small as possible, but " +"should be increased if artifacts appear along the edges of the canvas group." +msgstr "" +"Imposta la dimensione del margine utilizzato per espandere il rettangolo di " +"compensazione di questo [CanvasGroup]. Questo espande l'area del backbuffer " +"che sarà utilizzata dal [CanvasGroup]. Un margine più piccolo ridurrà l'area " +"utilizzata dal backbuffer, il che può aumentare le prestazioni, tuttavia se " +"[member use_mipmaps] è abilitato, un margine piccolo potrebbe causare errori " +"nelle mipmap sul bordo del [CanvasGroup]. Pertanto, questo dovrebbe essere " +"lasciato il più piccolo possibile, ma dovrebbe essere aumentato se compaiono " +"artefatti lungo i bordi del gruppo canvas." + +msgid "" +"Sets the size of a margin used to expand the drawable rect of this " +"[CanvasGroup]. The size of the [CanvasGroup] is determined by fitting a rect " +"around its children then expanding that rect by [member fit_margin]. This " +"increases both the backbuffer area used and the area covered by the " +"[CanvasGroup] both of which can reduce performance. This should be kept as " +"small as possible and should only be expanded when an increased size is " +"needed (e.g. for custom shader effects)." +msgstr "" +"Imposta la dimensione di un margine utilizzato per espandere il rettangolo " +"disegnabile di questo [CanvasGroup]. La dimensione del [CanvasGroup] è " +"determinata adattando un rettangolo attorno ai suoi figli, quindi espandendo " +"tale rettangolo di [member fit_margin]. Ciò aumenta sia l'area del backbuffer " +"utilizzata, sia l'area coperta dal [CanvasGroup], entrambe le quali possono " +"ridurre le prestazioni. Dovrebbe essere mantenuto il più piccolo possibile e " +"dovrebbe essere espanso solo quando è necessaria una dimensione maggiore (ad " +"esempio per effetti di shader personalizzati)." + +msgid "" +"If [code]true[/code], calculates mipmaps for the backbuffer before drawing " +"the [CanvasGroup] so that mipmaps can be used in a custom [ShaderMaterial] " +"attached to the [CanvasGroup]. Generating mipmaps has a performance cost so " +"this should not be enabled unless required." +msgstr "" +"Se [code]true[/code], calcola le mipmap per il backbuffer prima di disegnare " +"il [CanvasGroup] in modo che le mipmap siano utilizzabili in uno " +"[ShaderMaterial] personalizzato allegato al [CanvasGroup]. La generazione " +"delle mipmap ha un costo in termini di prestazioni, pertanto questa opzione " +"non dovrebbe essere abilitata a meno che non sia necessario." + msgid "Abstract base class for everything in 2D space." msgstr "Classe di base astratta per ogni nodo nello spazio 2D." @@ -19341,7 +26966,7 @@ msgid "" "in, to the [Viewport]s coordinate system." msgstr "" "Restituisce la trasformazione dal sistema di coordinate del canvas in cui si " -"trova questo elemento, al sistema di coordinate del [Viewport]." +"trova questo elemento, al sistema di coordinate della [Viewport]." msgid "" "Returns the mouse's position in the [CanvasLayer] that this [CanvasItem] is " @@ -19371,7 +26996,7 @@ msgid "" "to the [Viewport]s coordinate system." msgstr "" "Restituisce la trasformazione dal sistema di coordinate locali di questo " -"[CanvasItem] al sistema di coordinate del [Viewport]." +"[CanvasItem] al sistema di coordinate del la [Viewport]." msgid "Get the value of a shader parameter as set on this instance." msgstr "" @@ -19450,6 +27075,30 @@ msgstr "" "NOTIFICATION_DRAW] e viene chiamato [method _draw]. Ciò si verifica solo " "[b]una[/b] volta per frame, anche se questo metodo è stato chiamato più volte." +msgid "" +"Set the value of a shader uniform for this instance only ([url=$DOCS_URL/" +"tutorials/shaders/shader_reference/shading_language.html#per-instance-" +"uniforms]per-instance uniform[/url]). See also [method ShaderMaterial." +"set_shader_parameter] to assign a uniform on all instances using the same " +"[ShaderMaterial].\n" +"[b]Note:[/b] For a shader uniform to be assignable on a per-instance basis, " +"it [i]must[/i] be defined with [code]instance uniform ...[/code] rather than " +"[code]uniform ...[/code] in the shader code.\n" +"[b]Note:[/b] [param name] is case-sensitive and must match the name of the " +"uniform in the code exactly (not the capitalized name in the inspector)." +msgstr "" +"Imposta il valore di un'uniforme di shader solo per questa istanza " +"([url=$DOCS_URL/tutorials/shaders/shader_reference/shading_language.html#per-" +"instance-uniforms]uniforme per istanza[/url]). Consulta anche [method " +"ShaderMaterial.set_shader_parameter] per assegnare un'uniforme a tutte le " +"istanze che utilizzano lo stesso [ShaderMaterial].\n" +"[b]Nota:[/b] Affinché un'uniforme di shader possa essere assegnabile per " +"istanza individualmente, [i]deve[/i] essere definita con [code]instance " +"uniform ...[/code] anziché [code]uniform ...[/code] nel codice dello shader.\n" +"[b]Nota:[/b] [param name] è sensibile alle maiuscole e alle minuscole e deve " +"corrispondere esattamente al nome dell'uniforme in codice (non al nome " +"formattato nell'ispettore)." + msgid "" "If [param enable] is [code]true[/code], this node will receive [constant " "NOTIFICATION_LOCAL_TRANSFORM_CHANGED] when its local transform changes." @@ -19554,9 +27203,54 @@ msgid "" "share a layer with the [Viewport]'s canvas cull mask." msgstr "" "Gli strati di rendering in cui questo [CanvasItem] viene renderizzato dai " -"nodi [Viewport]. Un [Viewport] eseguirà il rendering di un [CanvasItem] se " -"esso e tutti i suoi elementi genitori condividono uno strato con la maschera " -"di culling del [Viewport]." +"nodi [Viewport]. Una [Viewport] renderizzerà un [CanvasItem] se esso e tutti " +"i suoi elementi genitori condividono uno strato con la maschera di culling " +"della [Viewport]." + +msgid "" +"If [code]true[/code], this [CanvasItem] may be drawn. Whether this " +"[CanvasItem] is actually drawn depends on the visibility of all of its " +"[CanvasItem] ancestors. In other words: this [CanvasItem] will be drawn when " +"[method is_visible_in_tree] returns [code]true[/code] and all [CanvasItem] " +"ancestors share at least one [member visibility_layer] with this " +"[CanvasItem].\n" +"[b]Note:[/b] For controls that inherit [Popup], the correct way to make them " +"visible is to call one of the multiple [code]popup*()[/code] functions " +"instead." +msgstr "" +"Se [code]true[/code], questo [CanvasItem] potrebbe essere disegnato. Se " +"questo [CanvasItem] sia effettivamente disegnato dipende dalla visibilità di " +"tutti i suoi [CanvasItem] antenati. In altre parole: questo [CanvasItem] sarà " +"disegnato quando [method is_visible_in_tree] restituisce [code]true[/code] e " +"tutti i [CanvasItem] antenati condividono almeno uno strato di visibilità " +"([member visibility_layer]) con questo [CanvasItem].\n" +"[b]Nota:[/b] Per i controlli che ereditano [Popup], il modo corretto per " +"renderli visibili è di invece chiamare una delle molteplici funzioni " +"[code]popup*()[/code]." + +msgid "" +"If [code]true[/code], this and child [CanvasItem] nodes with a higher Y " +"position are rendered in front of nodes with a lower Y position. If " +"[code]false[/code], this and child [CanvasItem] nodes are rendered normally " +"in scene tree order.\n" +"With Y-sorting enabled on a parent node ('A') but disabled on a child node " +"('B'), the child node ('B') is sorted but its children ('C1', 'C2', etc.) " +"render together on the same Y position as the child node ('B'). This allows " +"you to organize the render order of a scene without changing the scene tree.\n" +"Nodes sort relative to each other only if they are on the same [member " +"z_index]." +msgstr "" +"Se [code]true[/code], questo e i nodi [CanvasItem] figli con una posizione in " +"Y più alta sono renderizzati davanti ai nodi con una posizione in Y più " +"bassa. Se [code]false[/code], questo nodo e i [CanvasItem] figli sono " +"renderizzati normalmente nell'ordine dell'albero di scene.\n" +"Con l'ordinamento in Y abilitato su un nodo genitore ('A') ma disabilitato su " +"un nodo figlio ('B'), il nodo figlio ('B') è ordinato ma i suoi figli ('C1', " +"'C2', ecc.) renderizzano insieme sulla stessa posizione in Y del nodo figlio " +"(\"B\"). Ciò consente di organizzare l'ordine di rendering di una scena senza " +"modificare l'albero di scene.\n" +"I nodi sono ordinati l'uno rispetto all'altro solo se si trovano sullo stesso " +"[member z_index]." msgid "" "If [code]true[/code], the node's Z index is relative to its parent's Z index. " @@ -19599,6 +27293,31 @@ msgstr "" "[b]Nota:[/b] Le connessioni differite non consentono il disegno tramite i " "metodi [code]draw_*[/code]." +msgid "" +"Emitted when the [CanvasItem] is hidden, i.e. it's no longer visible in the " +"tree (see [method is_visible_in_tree])." +msgstr "" +"Emesso quando il [CanvasItem] è nascosto, ovvero non è più visibile " +"nell'albero (vedi [method is_visible_in_tree])." + +msgid "" +"Emitted when the [CanvasItem]'s boundaries (position or size) change, or when " +"an action took place that may have affected these boundaries (e.g. changing " +"[member Sprite2D.texture])." +msgstr "" +"Emesso quando i confini [Rect2] del [CanvasItem] (posizione o dimensioni) " +"sono cambiati o quando si svolge un'azione che potrebbe aver influito su tali " +"confini (ad esempio la modifica di [member Sprite2D.texture])." + +msgid "" +"Emitted when the [CanvasItem]'s visibility changes, either because its own " +"[member visible] property changed or because its visibility in the tree " +"changed (see [method is_visible_in_tree])." +msgstr "" +"Emesso quando la visibilità del [CanvasItem] cambia, o perché è cambiata la " +"sua proprietà [member visible] o perché è cambiata la sua visibilità " +"nell'albero (vedi [method is_visible_in_tree])." + msgid "" "The [CanvasItem]'s global transform has changed. This notification is only " "received if enabled by [method set_notify_transform]." @@ -19763,6 +27482,13 @@ msgstr "" "Modalità di fusione mista. Si presuppone che i colori siano premoltiplicati " "per il valore alfa (opacità)." +msgid "" +"Render the material using both light and non-light sensitive material " +"properties." +msgstr "" +"Renderizza il materiale usando proprietà del materiale sia sensibili alla " +"luce che non sensibili alla luce." + msgid "Render the material as if there were no light." msgstr "Renderizza il materiale come se non ci fosse luce." @@ -19826,7 +27552,7 @@ msgid "" "[Viewport]s coordinate system." msgstr "" "Restituisce la trasformazione dal sistema di coordinate del [CanvasLayer] al " -"sistema di coordinate del [Viewport]." +"sistema di coordinate della [Viewport]." msgid "" "Hides any [CanvasItem] under this [CanvasLayer]. This is equivalent to " @@ -19847,7 +27573,7 @@ msgid "" "code], uses the default viewport instead." msgstr "" "Il nodo [Viewport] personalizzato assegnato al [CanvasLayer]. Se [code]null[/" -"code], utilizza invece il viewport predefinito." +"code], utilizza invece la viewport predefinita." msgid "" "Scales the layer when using [member follow_viewport_enabled]. Layers moving " @@ -20205,6 +27931,50 @@ msgstr "" "movimento diagonale, a differenza di [member velocity] che restituisce la " "velocità richiesta." +msgid "" +"Returns a [KinematicCollision2D], which contains information about a " +"collision that occurred during the last call to [method move_and_slide]. " +"Since the body can collide several times in a single call to [method " +"move_and_slide], you must specify the index of the collision in the range 0 " +"to ([method get_slide_collision_count] - 1).\n" +"[b]Example:[/b] Iterate through the collisions with a [code]for[/code] loop:\n" +"[codeblocks]\n" +"[gdscript]\n" +"for i in get_slide_collision_count():\n" +" var collision = get_slide_collision(i)\n" +" print(\"Collided with: \", collision.get_collider().name)\n" +"[/gdscript]\n" +"[csharp]\n" +"for (int i = 0; i < GetSlideCollisionCount(); i++)\n" +"{\n" +" KinematicCollision2D collision = GetSlideCollision(i);\n" +" GD.Print(\"Collided with: \", (collision.GetCollider() as Node).Name);\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"Restituisce un [KinematicCollision2D], che contiene informazioni su una " +"collisione che si è verificate durante l'ultima chiamata a [method " +"move_and_slide]. Poiché il corpo può collidere più volte in una singola " +"chiamata a [method move_and_slide], è necessario specificare l'indice della " +"collisione nell'intervallo da 0 a ([method get_slide_collision_count] - 1).\n" +"[b]Esempio:[/b] Itera tra le collisioni con un ciclo [code]for[/code]:\n" +"[codeblocks]\n" +"[gdscript]\n" +"for i in get_slide_collision_count():\n" +" var collision = get_slide_collision(i)\n" +" print(\"In collisione con: \", collision.get_collider().name)\n" +"[/gdscript]\n" +"[csharp]\n" +"for (int i = 0; i < GetSlideCollisionCount(); i++)\n" +"{\n" +" KinematicCollision2D collision = GetSlideCollision(i);\n" +" GD.Print(\"In collisione con: \", (collision.GetCollider() as Node)." +"Name);\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + msgid "" "Returns the number of times the body collided and changed direction during " "the last call to [method move_and_slide]." @@ -20506,6 +28276,33 @@ msgstr "" "influisce sul movimento solo quando [member motion_mode] è [constant " "MOTION_MODE_FLOATING]." +msgid "" +"Apply when notions of walls, ceiling and floor are relevant. In this mode the " +"body motion will react to slopes (acceleration/slowdown). This mode is " +"suitable for sided games like platformers." +msgstr "" +"Da applicare quando sono rilevanti le nozioni di muri, soffitto e pavimento. " +"In questa modalità il movimento del corpo reagirà alle pendenze " +"(accelerazione/rallentamento). Questa modalità è adatta per giochi laterali " +"come i piattaforme." + +msgid "" +"Apply when there is no notion of floor or ceiling. All collisions will be " +"reported as [code]on_wall[/code]. In this mode, when you slide, the speed " +"will always be constant. This mode is suitable for top-down games." +msgstr "" +"Da applicare quando non c'è nozione di pavimento o soffitto. Tutte le " +"collisioni saranno segnalate come [code]on_wall[/code]. In questa modalità, " +"quando scivoli, la velocità sarà sempre costante. Questa modalità è adatta " +"per i giochi dall'alto." + +msgid "" +"Add the last platform velocity to the [member velocity] when you leave a " +"moving platform." +msgstr "" +"Aggiunge la velocità dell'ultima piattaforma alla [member velocity] quando si " +"abbandona una piattaforma in movimento." + msgid "" "Add the last platform velocity to the [member velocity] when you leave a " "moving platform, but any downward motion is ignored. It's useful to keep full " @@ -20685,6 +28482,16 @@ msgstr "" "motion_mode] è [constant MOTION_MODE_GROUNDED], questa proprietà influisce " "sul movimento solo se [member floor_block_on_wall] è [code]true[/code]." +msgid "" +"Apply when notions of walls, ceiling and floor are relevant. In this mode the " +"body motion will react to slopes (acceleration/slowdown). This mode is " +"suitable for grounded games like platformers." +msgstr "" +"Da applicare quando sono rilevanti le nozioni di muri, soffitto e pavimento. " +"In questa modalità il movimento del corpo reagirà alle pendenze " +"(accelerazione/rallentamento). Questa modalità è adatta per giochi come i " +"piattaforme." + msgid "" "Apply when there is no notion of floor or ceiling. All collisions will be " "reported as [code]on_wall[/code]. In this mode, when you slide, the speed " @@ -20755,10 +28562,76 @@ msgstr "" "1)}\n" "[/codeblock]" +msgid "" +"[TextServer] RID of the font used to render glyph, this value can be used " +"with [code]TextServer.font_*[/code] methods to retrieve font information.\n" +"[b]Note:[/b] Read-only. Setting this property won't affect drawing." +msgstr "" +"RID per il [TextServer] del font utilizzato per renderizzare il glifo, questo " +"valore può essere utilizzato con i metodi [code]TextServer.font_*[/code] per " +"recuperare le informazioni sul font.\n" +"[b]Nota:[/b] Di sola lettura. L'impostazione di questa proprietà non influirà " +"sul disegno." + +msgid "" +"Number of glyphs in the grapheme cluster. This value is set in the first " +"glyph of a cluster.\n" +"[b]Note:[/b] Read-only. Setting this property won't affect drawing." +msgstr "" +"Numero di glifi nel cluster di grafemi. Questo valore è impostato nel primo " +"glifo di un cluster.\n" +"[b]Nota:[/b] Di sola lettura. Impostare questa proprietà non influirà sul " +"disegno." + +msgid "" +"Glyph flags. See [enum TextServer.GraphemeFlag] for more info.\n" +"[b]Note:[/b] Read-only. Setting this property won't affect drawing." +msgstr "" +"Opzioni per il glifo. Vedi [enum TextServer.GraphemeFlag] per ulteriori " +"informazioni.\n" +"[b]Nota:[/b] Di sola lettura. Impostare questa proprietà non influirà sul " +"disegno." + +msgid "" +"Glyph index specific to the [member font]. If you want to replace this glyph, " +"use [method TextServer.font_get_glyph_index] with [member font] to get a new " +"glyph index for a single character." +msgstr "" +"Indice di glifo specifico del [member font]. Se si desidera sostituire questo " +"glifo, usa [method TextServer.font_get_glyph_index] con [member font] per " +"ottenere un nuovo indice di glifo per un singolo carattere." + msgid "The position offset the character will be drawn with (in pixels)." msgstr "" "Lo scostamento della posizione con cui sarà disegnato il carattere (in pixel)." +msgid "" +"If [code]true[/code], FX transform is called for outline drawing.\n" +"[b]Note:[/b] Read-only. Setting this property won't affect drawing." +msgstr "" +"Se [code]true[/code], la trasformazione FX viene chiamata per disegnare il " +"contorno.\n" +"[b]Nota:[/b] Di sola lettura. Impostare questa proprietà non influirà sul " +"disegno." + +msgid "" +"Absolute character range in the string, corresponding to the glyph.\n" +"[b]Note:[/b] Read-only. Setting this property won't affect drawing." +msgstr "" +"Intervallo assoluto di caratteri nella stringa, corrispondente al glifo.\n" +"[b]Nota:[/b] Di sola lettura. Impostare questa proprietà non influirà sul " +"disegno." + +msgid "" +"The character offset of the glyph, relative to the current [RichTextEffect] " +"custom block.\n" +"[b]Note:[/b] Read-only. Setting this property won't affect drawing." +msgstr "" +"Lo scostamento del carattere del glifo, relativo al blocco [RichTextEffect] " +"personalizzato attuale.\n" +"[b]Nota:[/b] Di sola lettura. Impostare questa proprietà non influirà sul " +"disegno." + msgid "" "The current transform of the current glyph. It can be overridden (for " "example, by driving the position and rotation from a curve). You can also " @@ -20962,9 +28835,16 @@ msgstr "" "Restituisce [code]true[/code] se gli oggetti possono essere istanziati dalla " "classe [param class], altrimenti restituisce [code]false[/code]." +msgid "Calls a static method on a class." +msgstr "Chiama un metodo statico su una classe." + msgid "Returns whether the specified [param class] is available or not." msgstr "Restituisce se la classe [param class] è disponibile o meno." +msgid "Returns the API type of [param class]. See [enum APIType]." +msgstr "" +"Restituisce il tipo di API della classe [param class]. Vedi [enum APIType]." + msgid "" "Returns an array with all the keys in [param enum] of [param class] or its " "ancestry." @@ -21038,6 +28918,11 @@ msgstr "" "Restituisce il valore predefinito della proprietà nominata [param property] " "della classe [param class] o le sue classi antenate." +msgid "Returns the getter method name of [param property] of [param class]." +msgstr "" +"Restituisce il nome del metodo getter della proprietà nominata [param " +"property] della classe [param class]." + msgid "" "Returns an array with all the properties of [param class] or its ancestry if " "[param no_inheritance] is [code]false[/code]." @@ -21045,6 +28930,11 @@ msgstr "" "Restituisce un array con tutte le proprietà della classe [param class] o i " "suoi antenati se [param no_inheritance] è [code]false[/code]." +msgid "Returns the setter method name of [param property] of [param class]." +msgstr "" +"Restituisce il nome del metodo setter della proprietà nominata [param " +"property] della classe [param class]." + msgid "" "Returns the [param signal] data of [param class] or its ancestry. The " "returned value is a [Dictionary] with the following keys: [code]args[/code], " @@ -21134,6 +29024,21 @@ msgstr "" "Restituisce se la classe nominata [param inherits] è un antenato della classe " "[param class] o meno." +msgid "Native Core class type." +msgstr "Tipo di classe core nativa." + +msgid "Native Editor class type." +msgstr "Tipo di classe dell'editor nativa." + +msgid "GDExtension class type." +msgstr "Tipo di classe GDExtension." + +msgid "GDExtension Editor class type." +msgstr "Tipo di classe GDExtension dell'editor." + +msgid "Unknown class type." +msgstr "Tipo di classe sconosciuto." + msgid "A multiline text editor designed for editing code." msgstr "Un editor di testo multilinea progettato per modificare codice." @@ -21295,6 +29200,18 @@ msgid "Deletes all lines that are selected or have a caret on them." msgstr "" "Elimina tutte le righe che sono selezionate o che hanno un cursore su di loro." +msgid "" +"If there is no selection, indentation is inserted at the caret. Otherwise, " +"the selected lines are indented like [method indent_lines]. Equivalent to the " +"[member ProjectSettings.input/ui_text_indent] action. The indentation " +"characters used depend on [member indent_use_spaces] and [member indent_size]." +msgstr "" +"Se non c'è alcuna selezione, l'indentazione viene inserita al cursore. " +"Altrimenti, le righe selezionate vengono indentate come [method " +"indent_lines]. Equivalente all'azione [member ProjectSettings.input/" +"ui_text_indent]. I caratteri di indentazione utilizzati dipendono da [member " +"indent_use_spaces] e [member indent_size]." + msgid "" "Duplicates all lines currently selected with any caret. Duplicates the entire " "line beneath the current one no matter where the caret is within the line." @@ -21404,6 +29321,9 @@ msgstr "" msgid "Gets all executing lines." msgstr "Ottiene tutte le righe in esecuzione." +msgid "Returns all lines that are currently folded." +msgstr "Restituisce tutte le righe che sono attualmente ridotte." + msgid "" "Returns the full text with char [code]0xFFFF[/code] at the caret location." msgstr "" @@ -21441,6 +29361,14 @@ msgstr "" "Restituisce [code]true[/code] se la chiave di inizio stringa [param " "start_key] esiste." +msgid "" +"Indents all lines that are selected or have a caret on them. Uses spaces or a " +"tab depending on [member indent_use_spaces]. See [method unindent_lines]." +msgstr "" +"Indenta tutte le righe selezionate o che contengono un cursore. Utilizza " +"spazi o una tabulazione a seconda di [member indent_use_spaces]. Vedi [method " +"unindent_lines]." + msgid "" "Returns delimiter index if [param line] [param column] is in a comment. If " "[param column] is not provided, will return delimiter index if the entire " @@ -21461,6 +29389,47 @@ msgstr "" "non è fornito, restituirà l'indice del delimitatore se l'intera riga ([param " "line]) è una stringa. Altrimenti [code]-1[/code]." +msgid "" +"Returns [code]true[/code] if the given line is bookmarked. See [method " +"set_line_as_bookmarked]." +msgstr "" +"Restituisce [code]true[/code] se la riga fornita ha un segnalibro . Vedi " +"anche [method set_line_as_bookmarked]." + +msgid "" +"Returns [code]true[/code] if the given line is breakpointed. See [method " +"set_line_as_breakpoint]." +msgstr "" +"Restituisce [code]true[/code] se la riga fornita ha un punto d'interruzione. " +"Vedi anche [method set_line_as_breakpoint]." + +msgid "" +"Returns [code]true[/code] if the given line is a code region end. See [method " +"set_code_region_tags]." +msgstr "" +"Restituisce [code]true[/code] se la riga fornita è la fine di una regione di " +"codice. Vedi anche [method set_code_region_tags]." + +msgid "" +"Returns [code]true[/code] if the given line is a code region start. See " +"[method set_code_region_tags]." +msgstr "" +"Restituisce [code]true[/code] se la riga fornita è l'inizio di una regione di " +"codice. Vedi anche [method set_code_region_tags]." + +msgid "" +"Returns [code]true[/code] if the given line is marked as executing. See " +"[method set_line_as_executing]." +msgstr "" +"Restituisce [code]true[/code] se la riga fornita è segnata come in " +"esecuzione. Vedi anche [method set_line_as_executing]." + +msgid "" +"Returns [code]true[/code] if the given line is folded. See [method fold_line]." +msgstr "" +"Restituisce [code]true[/code] se la riga fornita è ridotta. Vedi anche " +"[method fold_line]." + msgid "Moves all lines down that are selected or have a caret on them." msgstr "" "Sposta verso il basso tutte le righe selezionate o che contengono un cursore." @@ -21495,11 +29464,53 @@ msgstr "" "Imposta il testo del suggerimento sul codice. Passa una stringa vuota per " "cancellare." +msgid "" +"If [code]true[/code], the code hint will draw below the main caret. If " +"[code]false[/code], the code hint will draw above the main caret. See [method " +"set_code_hint]." +msgstr "" +"Se [code]true[/code], il suggerimento del codice sarà disegnato sotto il " +"cursore principale. Se [code]false[/code], il suggerimento del codice sarà " +"disegnato sopra il cursore principale. Vedi [method set_code_hint]." + msgid "Sets the code region start and end tags (without comment delimiter)." msgstr "" "Imposta i tag di inizio e fine delle aree di codice (senza delimitatore di " "commento)." +msgid "" +"Sets the given line as bookmarked. If [code]true[/code] and [member " +"gutters_draw_bookmarks] is [code]true[/code], draws the [theme_item bookmark] " +"icon in the gutter for this line. See [method get_bookmarked_lines] and " +"[method is_line_bookmarked]." +msgstr "" +"Imposta la riga specificata come segnalibro. Se [code]true[/code] e [member " +"gutters_draw_bookmarks] è [code]true[/code], disegna l'icona [theme_item " +"bookmark] nel gutter per questa riga. Vedi [method get_bookmarked_lines] e " +"[method is_line_bookmarked]." + +msgid "" +"Sets the given line as a breakpoint. If [code]true[/code] and [member " +"gutters_draw_breakpoints_gutter] is [code]true[/code], draws the [theme_item " +"breakpoint] icon in the gutter for this line. See [method " +"get_breakpointed_lines] and [method is_line_breakpointed]." +msgstr "" +"Imposta la riga specificata come punto d'interruzione. Se [code]true[/code] e " +"[member gutters_draw_breakpoints_gutter] è [code]true[/code], disegna l'icona " +"[theme_item breakpoint] nel gutter per questa riga. Vedi [method " +"get_breakpointed_lines] e [method is_line_breakpointed]." + +msgid "" +"Sets the given line as executing. If [code]true[/code] and [member " +"gutters_draw_executing_lines] is [code]true[/code], draws the [theme_item " +"executing_line] icon in the gutter for this line. See [method " +"get_executing_lines] and [method is_line_executing]." +msgstr "" +"Imposta la riga specificata come in esecuzione. Se [code]true[/code] e " +"[member gutters_draw_executing_lines] è [code]true[/code], disegna l'icona " +"[theme_item executing_line] nel gutter per questa riga. Vedi [method " +"get_executing_lines] e [method is_line_executing]." + msgid "Sets the symbol emitted by [signal symbol_validate] as a valid lookup." msgstr "" "Imposta il simbolo emesso da [signal symbol_validate] come ricerca valida." @@ -21511,6 +29522,19 @@ msgid "Toggle the folding of the code block on all lines with a caret on them." msgstr "" "Commuta il ripiegamento del blocco di codice su tutte le righe con un cursore." +msgid "Unfolds all lines that are folded." +msgstr "Espande tutte le righe che erano precedentemente ridotte." + +msgid "" +"Unindents all lines that are selected or have a caret on them. Uses spaces or " +"a tab depending on [member indent_use_spaces]. Equivalent to the [member " +"ProjectSettings.input/ui_text_dedent] action. See [method indent_lines]." +msgstr "" +"Annulla l'indentazione di tutte le righe selezionate o che contengono un " +"cursore. Utilizza spazi o una tabulazione a seconda di [member " +"indent_use_spaces]. Equivalente all'azione [member ProjectSettings.input/" +"ui_text_dedent]. Vedi [method indent_lines]." + msgid "" "Submits all completion options added with [method " "add_code_completion_option]. Will try to force the autocomplete menu to " @@ -21522,6 +29546,51 @@ msgstr "" "automatico, se [param force] è [code]true[/code].\n" "[b]Nota:[/b] Questo sostituirà tutti i candidati attuali." +msgid "" +"If [code]true[/code], uses [member auto_brace_completion_pairs] to " +"automatically insert the closing brace when the opening brace is inserted by " +"typing or autocompletion. Also automatically removes the closing brace when " +"using backspace on the opening brace." +msgstr "" +"Se [code]true[/code], usa [member auto_brace_completion_pairs] per inserire " +"automaticamente la parentesi di chiusura quando la parentesi d'apertura viene " +"inserita tramite digitazione o completamento automatico. Inoltre, rimuove " +"automaticamente la parentesi di chiusura quando si preme il tasto backspace " +"sulla parentesi d'apertura." + +msgid "" +"If [code]true[/code], highlights brace pairs when the caret is on either one, " +"using [member auto_brace_completion_pairs]. If matching, the pairs will be " +"underlined. If a brace is unmatched, it is colored with [theme_item " +"brace_mismatch_color]." +msgstr "" +"Se [code]true[/code], evidenzia le coppie di parentesi quando il cursore è su " +"una di esse, usando [member auto_brace_completion_pairs]. Se corrispondono, " +"le coppie saranno sottolineate. Se una parentesi non ha corrispondenze, è " +"colorata con [theme_item brace_mismatch_color]." + +msgid "" +"Sets the brace pairs to be autocompleted. For each entry in the dictionary, " +"the key is the opening brace and the value is the closing brace that matches " +"it. A brace is a [String] made of symbols. See [member " +"auto_brace_completion_enabled] and [member " +"auto_brace_completion_highlight_matching]." +msgstr "" +"Imposta le coppie di parentesi da completare automaticamente. Per ogni voce " +"nel dizionario, la chiave è la parentesi d'apertura e il valore è la " +"parentesi di chiusura che la corrisponde. Una parentesi è una [String] " +"composta da simboli. Vedi [member auto_brace_completion_enabled] e [member " +"auto_brace_completion_highlight_matching]." + +msgid "" +"If [code]true[/code], the [member ProjectSettings.input/" +"ui_text_completion_query] action requests code completion. To handle it, see " +"[method _request_code_completion] or [signal code_completion_requested]." +msgstr "" +"Se [code]true[/code], l'azione [member ProjectSettings.input/" +"ui_text_completion_query] richiede il completamento del codice. Per gestirlo, " +"vedi [method _request_code_completion] o [signal code_completion_requested]." + msgid "Sets prefixes that will trigger code completion." msgstr "Imposta i prefissi che attiveranno il completamento del codice." @@ -21537,6 +29606,87 @@ msgstr "" "Imposta i delimitatori di stringa. Tutti i delimitatori di stringa esistenti " "saranno rimossi." +msgid "" +"If [code]true[/code], bookmarks are drawn in the gutter. This gutter is " +"shared with breakpoints and executing lines. See [method " +"set_line_as_bookmarked]." +msgstr "" +"Se [code]true[/code], i segnalibri sono disegnati nel gutter. Questo gutter è " +"condiviso con i punti d'interruzione e le righe in esecuzione. Vedi [method " +"set_line_as_bookmarked]." + +msgid "" +"If [code]true[/code], breakpoints are drawn in the gutter. This gutter is " +"shared with bookmarks and executing lines. Clicking the gutter will toggle " +"the breakpoint for the line, see [method set_line_as_breakpoint]." +msgstr "" +"Se [code]true[/code], i punti d'interruzione sono disegnati nel gutter. " +"Questo gutter è condiviso con i segnalibri e le righe in esecuzione. " +"Cliccando sul gutter si attiva/disattiva il punto d'interruzione per la riga, " +"vedi [method set_line_as_breakpoint]." + +msgid "" +"If [code]true[/code], executing lines are marked in the gutter. This gutter " +"is shared with breakpoints and bookmarks. See [method set_line_as_executing]." +msgstr "" +"Se [code]true[/code], le righe in esecuzione sono segnate nel gutter. Questo " +"gutter è condiviso con i punti d'interruzione e i segnalibri. Vedi [method " +"set_line_as_executing]." + +msgid "" +"If [code]true[/code], the fold gutter is drawn. In this gutter, the " +"[theme_item can_fold_code_region] icon is drawn for each foldable line (see " +"[method can_fold_line]) and the [theme_item folded_code_region] icon is drawn " +"for each folded line (see [method is_line_folded]). These icons can be " +"clicked to toggle the fold state, see [method toggle_foldable_line]. [member " +"line_folding] must be [code]true[/code] to show icons." +msgstr "" +"Se [code]true[/code], il gutter di piegatura è disegnato. In questo gutter, " +"l'icona [theme_item can_fold_code_region] è disegnata per ogni linea " +"piegabile (vedi [method can_fold_line]) e l'icona [theme_item " +"folding_code_region] è disegnata per ogni linea piegata (vedi [method " +"is_line_folded]). È possibile cliccare su queste icone per alternare lo stato " +"di piegatura, vedi [method toggle_foldable_line]. [member line_folding] deve " +"essere [code]true[/code] per mostrare le icone." + +msgid "" +"If [code]true[/code], the line number gutter is drawn. Line numbers start at " +"[code]1[/code] and are incremented for each line of text. Clicking and " +"dragging in the line number gutter will select entire lines of text." +msgstr "" +"Se [code]true[/code], il gutter del numero di riga è disegnato. I numeri di " +"riga iniziano da [code]1[/code] e sono incrementati per ogni riga di testo. " +"Cliccando e trascinando il gutter del numero di riga verranno selezionate " +"intere righe di testo." + +msgid "" +"If [code]true[/code], line numbers drawn in the gutter are zero padded based " +"on the total line count. Requires [member gutters_draw_line_numbers] to be " +"set to [code]true[/code]." +msgstr "" +"Se [code]true[/code], i numeri di riga disegnati nel gutter sono riempiti di " +"zeri in base al numero totale delle righe. Necessita che [member " +"gutters_draw_line_numbers] sia impostato su [code]true[/code]." + +msgid "" +"If [code]true[/code], an extra indent is automatically inserted when a new " +"line is added and a prefix in [member indent_automatic_prefixes] is found. If " +"a brace pair opening key is found, the matching closing brace will be moved " +"to another new line (see [member auto_brace_completion_pairs])." +msgstr "" +"Se [code]true[/code], un'ulteriore indentazione viene automaticamente " +"inserita quando viene aggiunta una nuova riga e viene trovato un prefisso in " +"[member indent_automatic_prefixes]. Se viene trovata una chiave d'apertura di " +"una coppia di parentesi, la parentesi di chiusura corrispondente verrà " +"spostata su un'altra nuova riga (vedi [member auto_brace_completion_pairs])." + +msgid "" +"Prefixes to trigger an automatic indent. Used when [member indent_automatic] " +"is set to [code]true[/code]." +msgstr "" +"Prefissi che attivano una indentazione automatica. Usato quando [member " +"indent_automatic] è impostato su [code]true[/code]." + msgid "" "Size of the tabulation indent (one [kbd]Tab[/kbd] press) in characters. If " "[member indent_use_spaces] is enabled the number of spaces to use." @@ -21548,6 +29698,16 @@ msgstr "" msgid "Use spaces instead of tabs for indentation." msgstr "Utilizza spazi anziché tabulazioni per l'indentazione." +msgid "" +"If [code]true[/code], lines can be folded. Otherwise, line folding methods " +"like [method fold_line] will not work and [method can_fold_line] will always " +"return [code]false[/code]. See [member gutters_draw_fold_gutter]." +msgstr "" +"Se [code]true[/code], le righe possono essere piegate. Altrimenti, i metodi " +"di piegatura delle righe come [method fold_line] non funzioneranno e [method " +"can_fold_line] restituirà sempre [code]false[/code]. Vedi [member " +"gutters_draw_fold_gutter]." + msgid "" "Draws vertical lines at the provided columns. The first entry is considered a " "main hard guideline and is draw more prominently." @@ -21562,6 +29722,12 @@ msgstr "" "Impostato se quando si clicca su una parola convalidata da [signal " "symbol_validate], dovrebbe essere emesso [signal symbol_lookup]." +msgid "" +"Set when a word is hovered, the [signal symbol_hovered] should be emitted." +msgstr "" +"Imposta se quando si passa sopra una parola con il cursore del mouse, [signal " +"symbol_hovered] dovrebbe essere emesso." + msgid "" "Emitted when a breakpoint is added or removed from a line. If the line is " "moved via backspace a removed is emitted at the old line." @@ -21570,9 +29736,45 @@ msgstr "" "Se la riga viene spostata tramite backspace, viene emesso removed sulla " "vecchia riga." +msgid "" +"Emitted when the user requests code completion. This signal will not be sent " +"if [method _request_code_completion] is overridden or [member " +"code_completion_enabled] is [code]false[/code]." +msgstr "" +"Emesso quando l'utente richiede il completamento del codice. Questo segnale " +"non verrà inviato se [method _request_code_completion] è sovrascritto o " +"[member code_completion_enabled] è [code]false[/code]." + +msgid "" +"Emitted when the user hovers over a symbol. Unlike [signal Control." +"mouse_entered], this signal is not emitted immediately, but when the cursor " +"is over the symbol for [member ProjectSettings.gui/timers/tooltip_delay_sec] " +"seconds.\n" +"[b]Note:[/b] [member symbol_tooltip_on_hover] must be [code]true[/code] for " +"this signal to be emitted." +msgstr "" +"Emesso quando l'utente passa il mouse su un simbolo. A differenza di [signal " +"Control.mouse_entered], questo segnale non viene emesso immediatamente, ma " +"quando il cursore è sopra il simbolo per [member ProjectSettings.gui/timers/" +"tooltip_delay_sec] secondi.\n" +"[b]Nota:[/b] [member symbol_tooltip_on_hover] deve essere [code]true[/code] " +"affinché questo segnale venga emesso." + msgid "Emitted when the user has clicked on a valid symbol." msgstr "Emesso quando l'utente ha cliccato su un simbolo valido." +msgid "" +"Emitted when the user hovers over a symbol. The symbol should be validated " +"and responded to, by calling [method set_symbol_lookup_word_as_valid].\n" +"[b]Note:[/b] [member symbol_lookup_on_click] must be [code]true[/code] for " +"this signal to be emitted." +msgstr "" +"Emesso quando l'utente passa il cursore del mouse su un simbolo. Il simbolo " +"deve essere convalidato e ci si deve rispondere, chiamando [method " +"set_symbol_lookup_word_as_valid].\n" +"[b]Nota:[/b] [member symbol_lookup_on_click] deve essere [code]true[/code] " +"affinché questo segnale venga emesso." + msgid "Marks the option as a class." msgstr "Contrassegna l'opzione come classe." @@ -21741,6 +29943,13 @@ msgstr "" "Imposta una [Texture2D] personalizzata da disegnare nel gutter delle " "ripiegature quando una regione di codice può essere ripiegata." +msgid "" +"Background panel for the color preview box in autocompletion (visible when " +"the color is translucent)." +msgstr "" +"Pannello di sfondo per il riquadro di anteprima del colore nel completamento " +"automatico (visibile quando il colore è traslucido)." + msgid "Icon to draw in the executing gutter for executing lines." msgstr "Icona da disegnare nel gutter di esecuzione per le righe in esecuzione." @@ -22483,6 +30692,23 @@ msgid "A node that provides a polygon shape to a [CollisionObject2D] parent." msgstr "" "Un nodo che fornisce una forma poligonale a un [CollisionObject2D] genitore." +msgid "" +"A node that provides a polygon shape to a [CollisionObject2D] parent and " +"allows to edit it. The polygon can be concave or convex. This can give a " +"detection shape to an [Area2D], turn [PhysicsBody2D] into a solid object, or " +"give a hollow shape to a [StaticBody2D].\n" +"[b]Warning:[/b] A non-uniformly scaled [CollisionPolygon2D] will likely not " +"behave as expected. Make sure to keep its scale the same on all axes and " +"adjust its polygon instead." +msgstr "" +"Un nodo che fornisce una forma poligonale a un [CollisionObject2D] genitore e " +"consente di modificarla. Il poligono può essere concavo o convesso. Ciò può " +"dare una forma di rilevamento a un [Area2D], trasformare un [PhysicsBody2D] " +"in un oggetto solido o dare una forma cava a uno [StaticBody2D].\n" +"[b]Avviso:[/b] Un [CollisionShape2D] ridimensionato in modo non uniforme " +"probabilmente non si comporterà come previsto. Assicurati di mantenere la sua " +"scala uguale su tutti gli assi e regola invece la sua forma." + msgid "Collision build mode. Use one of the [enum BuildMode] constants." msgstr "" "Modalità di costruzione delle collisioni. Utilizzare una delle costanti di " @@ -22571,6 +30797,34 @@ msgstr "" "probabilmente non si comporterà come previsto. Assicurati di mantenere la sua " "scala uguale su tutti gli assi e regola invece la sua risorsa forma." +msgid "" +"The collision shape color that is displayed in the editor, or in the running " +"project if [b]Debug > Visible Collision Shapes[/b] is checked at the top of " +"the editor.\n" +"[b]Note:[/b] The default value is [member ProjectSettings.debug/shapes/" +"collision/shape_color]. The [code]Color(0, 0, 0, 0)[/code] value documented " +"here is a placeholder, and not the actual default debug color." +msgstr "" +"Il colore di debug della forma di collisione che è visualizzato nell'editor, " +"o nel progetto in esecuzione se [b]Debug > Forme di collisione visibili[/b].\n" +"[b]Nota:[/b] Il valore predefinito è [member ProjectSettings.debug/shapes/" +"collision/shape_color]. Il valore [code]Color(0, 0, 0, 1)[/code] documentato " +"qui è un segnaposto e non il colore di debug predefinito effettivo." + +msgid "" +"If [code]true[/code], when the shape is displayed, it will show a solid fill " +"color in addition to its wireframe." +msgstr "" +"Se [code]true[/code], quando la forma è visualizzata, mostrerà un colore " +"solido di riempimento oltre al suo wireframe." + +msgid "" +"Length that the resulting collision extends in either direction perpendicular " +"to its 2D polygon." +msgstr "" +"Lunghezza per cui la collisione risultante si estende in entrambe le " +"direzioni perpendicolari al suo poligono 2D." + msgid "If [code]true[/code], no collision will be produced." msgstr "Se [code]true[/code], non sarà prodotta alcuna collisione." @@ -22691,14 +30945,14 @@ msgstr "" "un valore in virgola mobile a 32 bit, solitamente compreso tra [code]0.0[/" "code] e [code]1.0[/code]. Alcune proprietà (come [member CanvasItem." "modulate]) possono supportare valori maggiori di [code]1.0[/code], per colori " -"sovra-luminosi o ad alta gamma dinamica (High Dynamic Range o HDR). I colori " -"possono essere creati in vari modi: tramite i vari costruttori [Color], " -"tramite metodi statici come [method from_hsv] e usando un nome dall'insieme " -"di colori standardizzati basato sui [url=https://en.wikipedia.org/wiki/" -"X11_color_names]nomi di colore X11[/url] con l'aggiunta di [constant " +"sovra-luminosi o ad alta gamma dinamica (High Dynamic Range o HDR).\n" +"I colori possono essere creati in vari modi: tramite i vari costruttori " +"[Color], tramite metodi statici come [method from_hsv] e usando un nome " +"dall'insieme di colori standardizzati basato sui [url=https://en.wikipedia." +"org/wiki/X11_color_names]nomi di colore X11[/url] con l'aggiunta di [constant " "TRANSPARENT]. GDScript fornisce anche [method @GDScript.Color8], che usa " "numeri interi da [code]0[/code] a [code]255[/code] e non supporta i colori " -"overbright.\n" +"sovra-luminosi.\n" "[b]Nota:[/b] In un contesto booleano, un colore sarà valutato come " "[code]false[/code] se è uguale a [code]Color(0, 0, 0, 1)[/code] (nero opaco). " "Altrimenti, un colore sarà sempre valutato come [code]true[/code].\n" @@ -22714,6 +30968,17 @@ msgstr "Demo di interpolazione Tween" msgid "GUI Drag And Drop Demo" msgstr "Demo di trascinamento e rilascio in un interfaccia utente" +msgid "" +"Constructs a default [Color] from opaque black. This is the same as [constant " +"BLACK].\n" +"[b]Note:[/b] In C#, this constructs a [Color] with all of its components set " +"to [code]0.0[/code] (transparent black)." +msgstr "" +"Costruisce un [Color] predefinito dal nero opaco. È lo stesso di [constant " +"BLACK].\n" +"[b]Nota:[/b] In C#, costruisce un [Color] con tutti i suoi componenti " +"impostati su [code]0.0[/code] (nero trasparente)." + msgid "" "Constructs a [Color] from the existing color, with [member a] set to the " "given [param alpha] value.\n" @@ -22927,6 +31192,37 @@ msgstr "" "[/csharp]\n" "[/codeblocks]" +msgid "" +"Returns a [Color] constructed from red ([param r8]), green ([param g8]), blue " +"([param b8]), and optionally alpha ([param a8]) integer channels, each " +"divided by [code]255.0[/code] for their final value.\n" +"[codeblock]\n" +"var red = Color.from_rgba8(255, 0, 0) # Same as Color(1, 0, 0).\n" +"var dark_blue = Color.from_rgba8(0, 0, 51) # Same as Color(0, 0, " +"0.2).\n" +"var my_color = Color.from_rgba8(306, 255, 0, 102) # Same as Color(1.2, 1, 0, " +"0.4).\n" +"[/codeblock]\n" +"[b]Note:[/b] Due to the lower precision of [method from_rgba8] compared to " +"the standard [Color] constructor, a color created with [method from_rgba8] " +"will generally not be equal to the same color created with the standard " +"[Color] constructor. Use [method is_equal_approx] for comparisons to avoid " +"issues with floating-point precision error." +msgstr "" +"Restituisce un [Color] costruito da rosso ([param r8]), verde ([param g8]), " +"blu ([param b8]), e facoltativamente alfa ([param a8]) canali interi, " +"ciascuno diviso da [code]255.0[/code] per il loro valore finale.\n" +"[codeblock]\n" +"var red = Color8(255, 0, 0) # Uguale a Color(1, 0, 0).\n" +"var dark_blue = Color8(0, 0, 51) # Uguale a Color(0, 0, 0.2).\n" +"var my_color = Color8(306, 255, 0, 102) # Uguale a Color(1.2, 1, 0, 0.4).\n" +"[/codeblock]\n" +"[b]Nota:[/b] A causa della minore precisione di [method Color8] rispetto al " +"costruttore standard di [Color], un colore creato con [method Color8] " +"generalmente non sarà uguale allo stesso colore creato con il costruttore " +"standard di [Color]. Utilizza [method Color.is_equal_approx] per i confronti " +"per evitare problemi d'errori di precisione in virgola mobile." + msgid "" "Decodes a [Color] from an RGBE9995 format integer. See [constant Image." "FORMAT_RGBE9995]." @@ -23492,6 +31788,15 @@ msgstr "" msgid "The HSV hue of this color, on the range 0 to 1." msgstr "Tonalità HSV di questo colore, nell'intervallo da 0 a 1." +msgid "The OKHSL hue of this color, on the range 0 to 1." +msgstr "La tonalità OKHSL di questo colore, nell'intervallo da 0 a 1." + +msgid "The OKHSL lightness of this color, on the range 0 to 1." +msgstr "La luminosità OKHSL di questo colore, nell'intervallo da 0 a 1." + +msgid "The OKHSL saturation of this color, on the range 0 to 1." +msgstr "La saturazione OKHSL di questo colore, nell'intervallo da 0 a 1." + msgid "The color's red component, typically on the range of 0 to 1." msgstr "Il componente rosso del colore, solitamente nell'intervallo da 0 a 1." @@ -23795,6 +32100,9 @@ msgstr "Colore bianco Navajo." msgid "Navy blue color." msgstr "Colore blu marino." +msgid "Old lace color." +msgstr "Colore pizzo antico." + msgid "Olive color." msgstr "Colore oliva." @@ -24020,6 +32328,30 @@ msgstr "" "[code]Color(1 - c.r, 1 - c.g, 1 - c.b, 1 - c.a)[/code]. A differenza di " "[method inverted], anche il componente [member a] è invertito." +msgid "" +"A resource class for managing a palette of colors, which can be loaded and " +"saved using [ColorPicker]." +msgstr "" +"Una classe di risorsa per gestire una tavolozza di colori, che può essere " +"caricata e salvata attraverso [ColorPicker]." + +msgid "" +"The [ColorPalette] resource is designed to store and manage a collection of " +"colors. This resource is useful in scenarios where a predefined set of colors " +"is required, such as for creating themes, designing user interfaces, or " +"managing game assets. The built-in [ColorPicker] control can also make use of " +"[ColorPalette] without additional code." +msgstr "" +"La risorsa [ColorPalette] è progettata per archiviare e gestire una raccolta " +"di colori. Questa risorsa è utile in scenari in cui è richiesto un'insieme " +"predefinito di colori, ad esempio per la creazione di temi, la progettazione " +"di interfacce utente o la gestione di risorse di gioco. Il controllo " +"[ColorPicker] integrato può inoltre utilizzare [ColorPalette] senza codice " +"aggiuntivo." + +msgid "A [PackedColorArray] containing the colors in the palette." +msgstr "[PackedColorArray] contenente i colori nella tavolozza." + msgid "A widget that provides an interface for selecting or modifying a color." msgstr "" "Un widget che fornisce un'interfaccia per selezionare o modificare un colore." @@ -24237,6 +32569,9 @@ msgstr "L'icona per il menu a tendina dei preset di colori quando è espanso." msgid "The icon for color preset drop down menu when folded." msgstr "L'icona per il menu a tendina dei preset di colori quando è chiuso." +msgid "The icon for color preset option menu." +msgstr "L'icona per il menu a tendina dei preset di colori." + msgid "" "The indicator used to signalize that the color value is outside the 0-1 range." msgstr "" @@ -24250,6 +32585,9 @@ msgstr "" "L'immagine visualizzata sopra il riquadro o cerchio dei colori (a seconda di " "[member picker_shape]), che contrassegna il colore attualmente selezionato." +msgid "The fill image displayed behind the picker cursor." +msgstr "L'immagine di riempimento visualizzata dietro il cursore del selettore." + msgid "" "Background panel for the color preview box (visible when the color is " "translucent)." @@ -24272,6 +32610,12 @@ msgstr "" msgid "The icon for the screen color picker button." msgstr "L'icona per il pulsante di preleva colore dallo schermo." +msgid "The icon for circular picker shapes." +msgstr "L'icona per le forme circolari del selettore." + +msgid "The icon for rectangular picker shapes." +msgstr "L'icona per le forme rettangolari del selettore." + msgid "The icon for rectangular wheel picker shapes." msgstr "L'icona per le forme rettangolari della ruota di selezione." @@ -24376,6 +32720,9 @@ msgstr "" "La risorsa compositore memorizza gli attributi utilizzati per personalizzare " "il modo in cui viene renderizzato una [Viewport]." +msgid "The Compositor" +msgstr "Il compositore" + msgid "" "The custom [CompositorEffect]s that are applied during rendering of viewports " "using this compositor." @@ -24423,6 +32770,48 @@ msgstr "" "render_data] fornisce l'accesso allo stato di rendering, è valido solo " "durante il rendering e non dovrebbe essere memorizzato." +msgid "" +"If [code]true[/code] and MSAA is enabled, this will trigger a color buffer " +"resolve before the effect is run.\n" +"[b]Note:[/b] In [method _render_callback], to access the resolved buffer " +"use:\n" +"[codeblock]\n" +"var render_scene_buffers = render_data.get_render_scene_buffers()\n" +"var color_buffer = render_scene_buffers.get_texture(\"render_buffers\", " +"\"color\")\n" +"[/codeblock]" +msgstr "" +"Se [code]true[/code] e MSAA è abilitato, sarà attivata la risoluzione del " +"buffer di colore prima che l'effetto sia eseguito.\n" +"[b]Nota:[/b] In [method _render_callback], per accedere al buffer risolto " +"usa:\n" +"[codeblock]\n" +"var render_scene_buffers = render_data.get_render_scene_buffers()\n" +"var color_buffer = render_scene_buffers.get_texture(\"render_buffers\", " +"\"color\")\n" +"[/codeblock]" + +msgid "" +"If [code]true[/code] and MSAA is enabled, this will trigger a depth buffer " +"resolve before the effect is run.\n" +"[b]Note:[/b] In [method _render_callback], to access the resolved buffer " +"use:\n" +"[codeblock]\n" +"var render_scene_buffers = render_data.get_render_scene_buffers()\n" +"var depth_buffer = render_scene_buffers.get_texture(\"render_buffers\", " +"\"depth\")\n" +"[/codeblock]" +msgstr "" +"Se [code]true[/code] e MSAA è abilitato, sarà attivata la risoluzione del " +"buffer di profondità prima che l'effetto sia eseguito.\n" +"[b]Nota:[/b] In [method _render_callback], per accedere al buffer risolto " +"usa:\n" +"[codeblock]\n" +"var render_scene_buffers = render_data.get_render_scene_buffers()\n" +"var depth_buffer = render_scene_buffers.get_texture(\"render_buffers\", " +"\"depth\")\n" +"[/codeblock]" + msgid "" "The type of effect that is implemented, determines at what stage of rendering " "the callback is called." @@ -24437,6 +32826,83 @@ msgstr "" "Se [code]true[/code] questo effetto di rendering è applicato a qualsiasi " "viewport a cui viene aggiunto." +msgid "" +"If [code]true[/code] this triggers motion vectors being calculated during the " +"opaque render state.\n" +"[b]Note:[/b] In [method _render_callback], to access the motion vector buffer " +"use:\n" +"[codeblock]\n" +"var render_scene_buffers = render_data.get_render_scene_buffers()\n" +"var motion_buffer = render_scene_buffers.get_velocity_texture()\n" +"[/codeblock]" +msgstr "" +"Se [code]true[/code] questo attiva i vettori di movimento calcolati durante " +"lo stato del rendering opaco.\n" +"[b]Nota:[/b] In [method _render_callback], per accedere al buffer dei vettori " +"di movimento usa:\n" +"[codeblock]\n" +"var render_scene_buffers = render_data.get_render_scene_buffers()\n" +"var motion_buffer = render_scene_buffers.get_velocity_texture()\n" +"[/codeblock]" + +msgid "" +"If [code]true[/code] this triggers normal and roughness data to be output " +"during our depth pre-pass, only applicable for the Forward+ renderer.\n" +"[b]Note:[/b] In [method _render_callback], to access the roughness buffer " +"use:\n" +"[codeblock]\n" +"var render_scene_buffers = render_data.get_render_scene_buffers()\n" +"var roughness_buffer = render_scene_buffers." +"get_texture(\"forward_clustered\", \"normal_roughness\")\n" +"[/codeblock]\n" +"The raw normal and roughness buffer is stored in an optimized format, " +"different than the one available in Spatial shaders. When sampling the " +"buffer, a conversion function must be applied. Use this function, copied from " +"[url=https://github.com/godotengine/godot/blob/" +"da5f39889f155658cef7f7ec3cc1abb94e17d815/servers/rendering/renderer_rd/" +"shaders/forward_clustered/scene_forward_clustered_inc.glsl#L334-L341]here[/" +"url]:\n" +"[codeblock]\n" +"vec4 normal_roughness_compatibility(vec4 p_normal_roughness) {\n" +" float roughness = p_normal_roughness.w;\n" +" if (roughness > 0.5) {\n" +" roughness = 1.0 - roughness;\n" +" }\n" +" roughness /= (127.0 / 255.0);\n" +" return vec4(normalize(p_normal_roughness.xyz * 2.0 - 1.0) * 0.5 + 0.5, " +"roughness);\n" +"}\n" +"[/codeblock]" +msgstr "" +"Se [code]true[/code] questo assicura che i dati di normale e di rugosità " +"siano prodotti durante il nostro pre-passaggio di profondità, applicabile " +"solo per il renderer Forward+.\n" +"[b]Nota:[/b] In [method _render_callback], per accedere al buffer di rugosità " +"usa:\n" +"[codeblock]\n" +"var render_scene_buffers = render_data.get_render_scene_buffers()\n" +"var roughness_buffer = render_scene_buffers." +"get_texture(\"forward_clustered\", \"normal_roughness\")\n" +"[/codeblock]\n" +"Il buffer grezzo di rugosità e di normale è memorizzato in un formato " +"ottimizzato, diverso da quello disponibile negli shader spaziali. Quando " +"viene campionato il buffer, è necessario applicare una funzione di " +"conversione. Usa questa funzione, copiata da [url=https://github.com/" +"godotengine/godot/blob/da5f39889f155658cef7f7ec3cc1abb94e17d815/servers/" +"rendering/renderer_rd/shaders/forward_clustered/scene_forward_clustered_inc." +"glsl#L334-L341]qui[/url]:\n" +"[codeblock]\n" +"vec4 normal_roughness_compatibility(vec4 p_normal_roughness) {\n" +" float roughness = p_normal_roughness.w;\n" +" if (roughness > 0.5) {\n" +" roughness = 1.0 - roughness;\n" +" }\n" +" roughness /= (127.0 / 255.0);\n" +" return vec4(normalize(p_normal_roughness.xyz * 2.0 - 1.0) * 0.5 + 0.5, " +"roughness);\n" +"}\n" +"[/codeblock]" + msgid "" "The callback is called before our opaque rendering pass, but after depth " "prepass (if applicable)." @@ -24451,6 +32917,15 @@ msgstr "" "Il callback viene richiamato dopo il nostro passaggio di rendering opaco, ma " "prima che venga renderizzato il cielo." +msgid "" +"The callback is called after our sky is rendered, but before our back buffers " +"are created (and if enabled, before subsurface scattering and/or screen space " +"reflections)." +msgstr "" +"Il callback viene chiamato dopo il rendering del cielo, ma prima che vengano " +"creati i back buffer (e, se abilitato, prima del subsurface scattering e/o " +"delle riflessioni nello spazio dello schermo)." + msgid "" "The callback is called before our transparent rendering pass, but after our " "sky is rendered and we've created our back buffers." @@ -24459,6 +32934,14 @@ msgstr "" "trasparente, ma dopo che il cielo è stato renderizzato e abbiamo creato i " "nostri back buffer." +msgid "" +"The callback is called after our transparent rendering pass, but before any " +"built-in post-processing effects and output to our render target." +msgstr "" +"Il callback viene chiamato dopo il passaggio di rendering trasparente, ma " +"prima di qualsiasi effetto di post-elaborazione e inviato sulla destinazione " +"di rendering." + msgid "Represents the size of the [enum EffectCallbackType] enum." msgstr "Rappresenta la dimensione dell'enumerazione [enum EffectCallbackType]." @@ -25422,12 +33905,105 @@ msgstr "" "Classe di base per tutti i controlli della GUI. Adatta la sua posizione e " "dimensioni in base al suo controllo padre." +msgid "" +"Base class for all UI-related nodes. [Control] features a bounding rectangle " +"that defines its extents, an anchor position relative to its parent control " +"or the current viewport, and offsets relative to the anchor. The offsets " +"update automatically when the node, any of its parents, or the screen size " +"change.\n" +"For more information on Godot's UI system, anchors, offsets, and containers, " +"see the related tutorials in the manual. To build flexible UIs, you'll need a " +"mix of UI elements that inherit from [Control] and [Container] nodes.\n" +"[b]Note:[/b] Since both [Node2D] and [Control] inherit from [CanvasItem], " +"they share several concepts from the class such as the [member CanvasItem." +"z_index] and [member CanvasItem.visible] properties.\n" +"[b]User Interface nodes and input[/b]\n" +"Godot propagates input events via viewports. Each [Viewport] is responsible " +"for propagating [InputEvent]s to their child nodes. As the [member SceneTree." +"root] is a [Window], this already happens automatically for all UI elements " +"in your game.\n" +"Input events are propagated through the [SceneTree] from the root node to all " +"child nodes by calling [method Node._input]. For UI elements specifically, it " +"makes more sense to override the virtual method [method _gui_input], which " +"filters out unrelated input events, such as by checking z-order, [member " +"mouse_filter], focus, or if the event was inside of the control's bounding " +"box.\n" +"Call [method accept_event] so no other node receives the event. Once you " +"accept an input, it becomes handled so [method Node._unhandled_input] will " +"not process it.\n" +"Only one [Control] node can be in focus. Only the node in focus will receive " +"events. To get the focus, call [method grab_focus]. [Control] nodes lose " +"focus when another node grabs it, or if you hide the node in focus.\n" +"Sets [member mouse_filter] to [constant MOUSE_FILTER_IGNORE] to tell a " +"[Control] node to ignore mouse or touch events. You'll need it if you place " +"an icon on top of a button.\n" +"[Theme] resources change the control's appearance. The [member theme] of a " +"[Control] node affects all of its direct and indirect children (as long as a " +"chain of controls is uninterrupted). To override some of the theme items, " +"call one of the [code]add_theme_*_override[/code] methods, like [method " +"add_theme_font_override]. You can also override theme items in the " +"Inspector.\n" +"[b]Note:[/b] Theme items are [i]not[/i] [Object] properties. This means you " +"can't access their values using [method Object.get] and [method Object.set]. " +"Instead, use the [code]get_theme_*[/code] and [code]add_theme_*_override[/" +"code] methods provided by this class." +msgstr "" +"Classe base per tutti i nodi riguardanti l'interfaccia utente. [Control] " +"presenta un rettangolo di delimitazione che definisce le sue estensioni, una " +"posizione di ancoraggio relativa al suo controllo padre o alla finestra di " +"visualizzazione attuale e offset relativi all'ancoraggio. Gli offset si " +"aggiornano automaticamente quando il nodo, uno qualsiasi dei suoi genitori o " +"le dimensioni dello schermo cambiano.\n" +"Per ulteriori informazioni sul sistema di interfaccia utente di Godot, " +"ancore, offset e contenitori, consulta i tutorial al riguardo nel manuale. " +"Per creare interfacce utente flessibili, avrai bisogno di un misto di " +"elementi dell'UI che ereditano dai nodi [Control] e [Container].\n" +"[b]Nota:[/b] Poiché sia [Node2D] che [Control] ereditano da [CanvasItem], " +"essi condividono diversi concetti della classe come le proprietà [member " +"CanvasItem.z_index] e [member CanvasItem.visible].\n" +"[b]Nodi e e input per l'interfaccia utente[/b]\n" +"Godot propaga gli eventi di input tramite le viewport. Ogni [Viewport] è " +"responsabile della propagazione degli [InputEvent] ai propri nodi figlio. " +"Poiché [member SceneTree.root] è una [Window], ciò avviene automaticamente " +"per tutti gli elementi dell'UI nel tuo gioco.\n" +"Gli eventi di input vengono propagati tramite [SceneTree] dal nodo radice a " +"tutti i nodi figlio chiamando [method Node._input]. Per gli elementi UI in " +"particolare, ha più senso sovrascrivere il metodo virtuale [method " +"_gui_input], che filtra gli eventi di input non correlati, ad esempio " +"controllando z-order, [member mouse_filter], focus o se l'evento era " +"all'interno del riquadro di delimitazione del controllo.\n" +"Chiama [method accept_event] in modo che nessun altro nodo riceva l'evento. " +"Una volta accettato un input, questo viene gestito in modo che [method Node." +"_unhandled_input] non lo elabori.\n" +"Solo un nodo [Control] può essere in focus. Solo il nodo in focus riceverà " +"gli eventi. Per ottenere il focus, chiama [method grab_focus]. I nodi " +"[Control] perdono il focus quando un altro nodo lo ottiene o se nascondi il " +"nodo in focus. Imposta [member mouse_filter] su [constant " +"MOUSE_FILTER_IGNORE] per dire a un nodo [Control] di ignorare gli eventi del " +"mouse o di tocco. Ne avrai bisogno se posizioni un'icona sopra un pulsante.\n" +"Imposta [member mouse_filter] su [constant MOUSE_FILTER_IGNORE] per dire a un " +"nodo [Control] di ignorare gli eventi del mouse o di tocco. Sarà necessario " +"se si posiziona un'icona sopra un pulsante.\n" +"Le risorse [Theme] cambiano l'aspetto del Control. Il [member theme] di un " +"[Control] influisce su tutti i suoi figli diretti e indiretti (purché una " +"catena di controlli non sia interrotta). Per sovrascrivere alcuni elementi " +"del tema, chiama uno dei metodi [code]add_theme_*_override[/code], come " +"[method add_theme_font_override]. È possibile anche sovrascrivere elementi " +"del tema nell'Ispettore.\n" +"[b]Nota:[/b] Gli elementi del tema [i]non[/i] sono proprietà [Object]. Ciò " +"significa che non è possibile accedere ai loro valori attraverso [method " +"Object.get] e [method Object.set]. Invece, usa i metodi [code]get_theme_*[/" +"code] e [code]add_theme_*_override[/code] forniti da questa classe." + msgid "GUI documentation index" msgstr "Indice di documentazione GUI" msgid "Control node gallery" msgstr "Galleria dei nodi di controllo" +msgid "Multiple resolutions" +msgstr "Molteplici risoluzioni" + msgid "All GUI Demos" msgstr "Tutte le demo d'interfaccia grafica" @@ -25478,6 +34054,59 @@ msgstr "" "[/csharp]\n" "[/codeblocks]" +msgid "" +"Godot calls this method to pass you the [param data] from a control's [method " +"_get_drag_data] result. Godot first calls [method _can_drop_data] to test if " +"[param data] is allowed to drop at [param at_position] where [param " +"at_position] is local to this control.\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _can_drop_data(position, data):\n" +" return typeof(data) == TYPE_DICTIONARY and data.has(\"color\")\n" +"\n" +"func _drop_data(position, data):\n" +" var color = data[\"color\"]\n" +"[/gdscript]\n" +"[csharp]\n" +"public override bool _CanDropData(Vector2 atPosition, Variant data)\n" +"{\n" +" return data.VariantType == Variant.Type.Dictionary && data." +"AsGodotDictionary().ContainsKey(\"color\");\n" +"}\n" +"\n" +"public override void _DropData(Vector2 atPosition, Variant data)\n" +"{\n" +" Color color = data.AsGodotDictionary()[\"color\"].AsColor();\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"Godot chiama questo metodo per passare [param data] dal risultato di [method " +"_get_drag_data] di un controllo. Godot chiama prima [method _can_drop_data] " +"per verificare se [param data] può essere rilasciato nella posizione [param " +"at_position], dove [param at_position] è locale a questo controllo.\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _can_drop_data(position, data):\n" +" return typeof(data) == TYPE_DICTIONARY and data.has(\"colore\")\n" +"\n" +"func _drop_data(position, data):\n" +" var colore= data[\"colore\"]\n" +"[/gdscript]\n" +"[csharp]\n" +"public override bool _CanDropData(Vector2 atPosition, Variant data)\n" +"{\n" +" return data.VariantType == Variant.Type.Dictionary && dict." +"AsGodotDictionary().ContainsKey(\"colore\");\n" +"}\n" +"\n" +"public override void _DropData(Vector2 atPosition, Variant data)\n" +"{\n" +" Color colore = data.AsGodotDictionary()[\"colore\"].AsColor();\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + msgid "" "Godot calls this method to get data that can be dragged and dropped onto " "controls that expect drop data. Returns [code]null[/code] if there is no data " @@ -25560,6 +34189,100 @@ msgstr "" "maggior parte dei nodi GUI basilari, come [Control], [Container], [Panel], " "ecc." +msgid "" +"Virtual method to be implemented by the user. Returns the tooltip text for " +"the position [param at_position] in control's local coordinates, which will " +"typically appear when the cursor is resting over this control. See [method " +"get_tooltip].\n" +"[b]Note:[/b] If this method returns an empty [String] and [method " +"_make_custom_tooltip] is not overridden, no tooltip is displayed." +msgstr "" +"Metodo virtuale da implementare dall'utente. Restituisce il testo del tooltip " +"per la posizione [param at_position] nelle coordinate locali del controllo, " +"che in genere apparirà quando il cursore si trova su questo controllo. Vedi " +"[method get_tooltip].\n" +"[b]Nota:[/b] Se questo metodo restituisce una [String] vuota e [method " +"_make_custom_tooltip] non è sovrascritto, non viene visualizzato alcun " +"tooltip." + +msgid "" +"Virtual method to be implemented by the user. Override this method to handle " +"and accept inputs on UI elements. See also [method accept_event].\n" +"[b]Example:[/b] Click on the control to print a message:\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _gui_input(event):\n" +" if event is InputEventMouseButton:\n" +" if event.button_index == MOUSE_BUTTON_LEFT and event.pressed:\n" +" print(\"I've been clicked D:\")\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _GuiInput(InputEvent @event)\n" +"{\n" +" if (@event is InputEventMouseButton mb)\n" +" {\n" +" if (mb.ButtonIndex == MouseButton.Left && mb.Pressed)\n" +" {\n" +" GD.Print(\"I've been clicked D:\");\n" +" }\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"If the [param event] inherits [InputEventMouse], this method will [b]not[/b] " +"be called when:\n" +"- the control's [member mouse_filter] is set to [constant " +"MOUSE_FILTER_IGNORE];\n" +"- the control is obstructed by another control on top, that doesn't have " +"[member mouse_filter] set to [constant MOUSE_FILTER_IGNORE];\n" +"- the control's parent has [member mouse_filter] set to [constant " +"MOUSE_FILTER_STOP] or has accepted the event;\n" +"- the control's parent has [member clip_contents] enabled and the [param " +"event]'s position is outside the parent's rectangle;\n" +"- the [param event]'s position is outside the control (see [method " +"_has_point]).\n" +"[b]Note:[/b] The [param event]'s position is relative to this control's " +"origin." +msgstr "" +"Metodo virtuale da implementare dall'utente. Sovrascrivi questo metodo per " +"gestire e accettare gli input sugli elementi dell'UI. Vedi anche [method " +"accept_event].\n" +"[b]Esempio:[/b] Clicca sul controllo per stampare un messaggio.\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _gui_input(event):\n" +" if event is InputEventMouseButton:\n" +" if event.button_index == MOUSE_BUTTON_LEFT and event.pressed:\n" +" print(\"Sono stato cliccato! D:\")\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _GuiInput(InputEvent @event)\n" +"{\n" +" if (@event is InputEventMouseButton mb)\n" +" {\n" +" if (mb.ButtonIndex == MouseButton.Left && mb.Pressed)\n" +" {\n" +" GD.Print(\"Sono stato cliccato! D:\");\n" +" }\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"Se [param event] eredita [InputEventMouse], questo metodo [b]non[/b] verrà " +"chiamato quando:\n" +"- il [member mouse_filter] del controllo è impostato su [constant " +"MOUSE_FILTER_IGNORE];\n" +"- il controllo è ostruito da un altro controllo sopra di esso, che non ha " +"[member mouse_filter] impostato su [constant MOUSE_FILTER_IGNORE];\n" +"- il genitore del controllo ha [member mouse_filter] impostato su [constant " +"MOUSE_FILTER_STOP] o ha accettato l'evento;\n" +"- il genitore del controllo ha [member clip_contents] abilitato e la " +"posizione del [param event] è all'esterno del rettangolo del genitore;\n" +"- la posizione di [param event] è all'esterno del controllo (vedi [method " +"_has_point]).\n" +"[b]Nota:[/b] La posizione di [param event] è relativa all'origine di questo " +"controllo." + msgid "" "Virtual method to be implemented by the user. Returns whether the given " "[param point] is inside this control.\n" @@ -25575,6 +34298,128 @@ msgstr "" "[b]Nota:[/b] Se vuoi controllare se un punto è all'interno del controllo, " "puoi usare [code]Rect2(Vector2.ZERO, size).has_point(point)[/code]." +msgid "" +"Virtual method to be implemented by the user. Returns a [Control] node that " +"should be used as a tooltip instead of the default one. [param for_text] is " +"the return value of [method get_tooltip].\n" +"The returned node must be of type [Control] or Control-derived. It can have " +"child nodes of any type. It is freed when the tooltip disappears, so make " +"sure you always provide a new instance (if you want to use a pre-existing " +"node from your scene tree, you can duplicate it and pass the duplicated " +"instance). When [code]null[/code] or a non-Control node is returned, the " +"default tooltip will be used instead.\n" +"The returned node will be added as child to a [PopupPanel], so you should " +"only provide the contents of that panel. That [PopupPanel] can be themed " +"using [method Theme.set_stylebox] for the type [code]\"TooltipPanel\"[/code] " +"(see [member tooltip_text] for an example).\n" +"[b]Note:[/b] The tooltip is shrunk to minimal size. If you want to ensure " +"it's fully visible, you might want to set its [member custom_minimum_size] to " +"some non-zero value.\n" +"[b]Note:[/b] The node (and any relevant children) should have their [member " +"CanvasItem.visible] set to [code]true[/code] when returned, otherwise, the " +"viewport that instantiates it will not be able to calculate its minimum size " +"reliably.\n" +"[b]Note:[/b] If overridden, this method is called even if [method " +"get_tooltip] returns an empty string. When this happens with the default " +"tooltip, it is not displayed. To copy this behavior, return [code]null[/code] " +"in this method when [param for_text] is empty.\n" +"[b]Example:[/b] Use a constructed node as a tooltip:\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _make_custom_tooltip(for_text):\n" +" var label = Label.new()\n" +" label.text = for_text\n" +" return label\n" +"[/gdscript]\n" +"[csharp]\n" +"public override Control _MakeCustomTooltip(string forText)\n" +"{\n" +" var label = new Label();\n" +" label.Text = forText;\n" +" return label;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Example:[/b] Usa a scene instance as a tooltip:\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _make_custom_tooltip(for_text):\n" +" var tooltip = preload(\"res://some_tooltip_scene.tscn\").instantiate()\n" +" tooltip.get_node(\"Label\").text = for_text\n" +" return tooltip\n" +"[/gdscript]\n" +"[csharp]\n" +"public override Control _MakeCustomTooltip(string forText)\n" +"{\n" +" Node tooltip = ResourceLoader.Load(\"res://" +"some_tooltip_scene.tscn\").Instantiate();\n" +" tooltip.GetNode