diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
index 7e580b0d7..de93034e0 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -14,6 +14,6 @@ assignees: ''
If you know how to fix the issue you are reporting please
consider opening a pull request. We provide a tutorial on
-using git here: https://docs.godotengine.org/en/stable/community/contributing/pr_workflow.html,
-writing documentation at https://docs.godotengine.org/en/stable/community/contributing/docs_writing_guidelines.html
-and contributing to the class reference here: https://docs.godotengine.org/en/stable/community/contributing/updating_the_class_reference.html
+using git here: https://contributing.godotengine.org/en/latest/organization/pull_requests/creating_pull_requests.html,
+writing documentation at https://contributing.godotengine.org/en/latest/documentation/guidelines/index.html
+and contributing to the class reference here: https://contributing.godotengine.org/en/latest/documentation/class_reference.html
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index 62e3e211d..33ddb49b1 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -4,5 +4,5 @@ PRs can target other branches (e.g. `3.2`, `3.5`) if the same change was done in
PRs must not target `stable`, as that branch is updated manually.
The type of content accepted into the documentation is explained here:
-https://docs.godotengine.org/en/latest/community/contributing/content_guidelines.html
+https://contributing.godotengine.org/en/latest/documentation/guidelines/content_guidelines.html
-->
diff --git a/.github/workflows/build_offline_docs.yml b/.github/workflows/build_offline_docs.yml
index 82251e4b3..14b0a3b56 100644
--- a/.github/workflows/build_offline_docs.yml
+++ b/.github/workflows/build_offline_docs.yml
@@ -24,7 +24,7 @@ jobs:
permissions:
contents: write
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v5
with:
ref: ${{ matrix.branch }}
diff --git a/.github/workflows/check_urls.yml b/.github/workflows/check_urls.yml
index 26ece3c47..7359b526e 100644
--- a/.github/workflows/check_urls.yml
+++ b/.github/workflows/check_urls.yml
@@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-24.04
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v5
- name: Restore lychee cache
uses: actions/cache@v4
diff --git a/.github/workflows/cherrypick.yml b/.github/workflows/cherrypick.yml
index 0be1fc399..50d7e270e 100644
--- a/.github/workflows/cherrypick.yml
+++ b/.github/workflows/cherrypick.yml
@@ -10,7 +10,7 @@ on:
env:
# TODO: Add a way to handle multiple potential cherrypick targets.
- TARGET_BRANCH: '4.3'
+ TARGET_BRANCH: '4.5'
USERNAME: 'Godot Organization'
EMAIL: 'noreply@godotengine.org'
@@ -35,7 +35,7 @@ jobs:
steps:
- name: Checkout
- uses: actions/checkout@v4
+ uses: actions/checkout@v5
with:
ref: ${{ env.TARGET_BRANCH }}
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index e7413f86d..56d772aab 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -14,11 +14,15 @@ jobs:
timeout-minutes: 120
steps:
- name: Checkout
- uses: actions/checkout@v4
+ uses: actions/checkout@v5
- name: Style checks via pre-commit
uses: pre-commit/action@v3.0.1
+ - name: Custom RST checks (check-rst.sh)
+ run: |
+ bash ./_tools/check-rst.sh
+
- name: Get Python version
id: pythonv
run: |
diff --git a/.github/workflows/sync_class_ref.yml b/.github/workflows/sync_class_ref.yml
index fb786c547..10530828f 100644
--- a/.github/workflows/sync_class_ref.yml
+++ b/.github/workflows/sync_class_ref.yml
@@ -17,17 +17,17 @@ jobs:
runs-on: ubuntu-24.04
timeout-minutes: 10
env:
- engine_rev: '4.4'
+ engine_rev: '4.5'
permissions:
contents: write
pull-requests: write
steps:
- name: Checkout the documentation repository
- uses: actions/checkout@v4
+ uses: actions/checkout@v5
- name: Checkout the engine repository
- uses: actions/checkout@v4
+ uses: actions/checkout@v5
with:
repository: 'godotengine/godot'
# Use the appropriate branch for the documentation version.
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 806934458..8712366a6 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -6,7 +6,7 @@ repos:
rev: v2.3.0
hooks:
- id: codespell
- files: ^(about|community|contributing|getting_started|tutorials)/.*\.rst$
+ files: ^(about|community|engine_details|getting_started|tutorials)/.*\.rst$
additional_dependencies: [tomli]
- repo: https://github.com/pre-commit/pre-commit-hooks
diff --git a/404.rst b/404.rst
new file mode 100644
index 000000000..21960757c
--- /dev/null
+++ b/404.rst
@@ -0,0 +1,24 @@
+:github_url: hide
+:allow_comments: False
+
+Page not found
+==============
+
+.. https://github.com/readthedocs/sphinx-notfound-page
+
+.. raw:: html
+
+
+ Sorry, we couldn't find that page. It may have been renamed or removed
+ in the version of the documentation you're currently browsing.
+
+
+ If you're currently browsing the
+ latest version of the documentation, try browsing the
+ stable version of the documentation.
+
+
+ Alternatively, use the
+ Search docs
+ box on the left or go to the homepage.
+
diff --git a/README.md b/README.md
index bf2223d19..8684a8ba9 100644
--- a/README.md
+++ b/README.md
@@ -33,16 +33,16 @@ add-on.
All contributors are welcome to help on the Godot documentation.
-To get started, head to the [Contributing section](https://docs.godotengine.org/en/latest/contributing/how_to_contribute.html) of the online manual. There, you will find all the information you need to write and submit changes.
+To get started, head to the [Contributing documentation](https://contributing.godotengine.org/en/latest/organization/how_to_contribute.html). There, you will find all the information you need to write and submit changes.
Here are some quick links to the areas you might be interested in:
-1. [Contributing to the online manual](https://docs.godotengine.org/en/latest/contributing/documentation/contributing_to_the_documentation.html)
-2. [Contributing to the class reference](https://docs.godotengine.org/en/latest/contributing/documentation/updating_the_class_reference.html)
-3. [Content guidelines](https://docs.godotengine.org/en/latest/contributing/documentation/content_guidelines.html)
-4. [Writing guidelines](https://docs.godotengine.org/en/latest/contributing/documentation/docs_writing_guidelines.html)
-5. [Building the manual](https://docs.godotengine.org/en/latest/contributing/documentation/building_the_manual.html)
-6. [Translating the documentation](https://docs.godotengine.org/en/latest/contributing/documentation/editor_and_docs_localization.html)
+1. [Contributing to the online manual](https://contributing.godotengine.org/en/latest/documentation/manual/index.html)
+2. [Contributing to the class reference](https://contributing.godotengine.org/en/latest/documentation/class_reference.html)
+3. [Content guidelines](https://contributing.godotengine.org/en/latest/documentation/guidelines/content_guidelines.html)
+4. [Writing guidelines](https://contributing.godotengine.org/en/latest/documentation/guidelines/docs_writing_guidelines.html)
+5. [Building the manual](https://contributing.godotengine.org/en/latest/documentation/manual/building_the_manual.html)
+6. [Translating the documentation](https://contributing.godotengine.org/en/latest/documentation/translation/index.html)
## License
diff --git a/_extensions/gdscript.py b/_extensions/gdscript.py
index 533732158..f7c1e214c 100644
--- a/_extensions/gdscript.py
+++ b/_extensions/gdscript.py
@@ -324,6 +324,7 @@ class GDScriptLexer(RegexLexer):
"is_instance_of",
"len",
"load",
+ "ord",
"preload",
"print_debug",
"print_stack",
@@ -396,6 +397,7 @@ class GDScriptLexer(RegexLexer):
words(
(
# modules/gdscript/doc_classes/@GDScript.xml
+ "@abstract",
"@export",
"@export_category",
"@export_color_no_alpha",
@@ -404,6 +406,7 @@ class GDScriptLexer(RegexLexer):
"@export_enum",
"@export_exp_easing",
"@export_file",
+ "@export_file_path",
"@export_flags",
"@export_flags_2d_navigation",
"@export_flags_2d_physics",
diff --git a/_static/css/custom.css b/_static/css/custom.css
index 5a57b8b4a..0300e8ecd 100644
--- a/_static/css/custom.css
+++ b/_static/css/custom.css
@@ -150,6 +150,8 @@
--kbd-shadow-color: #b0b7bf;
--kbd-text-color: #444d56;
+ --role-button-background-color: #d3d7e1;
+
--code-example-good-color: #3fb950;
--code-example-bad-color: #f85149;
@@ -279,6 +281,8 @@
--kbd-outline-color: #3d4144;
--kbd-shadow-color: #1e2023;
--kbd-text-color: #e2f2ff;
+
+ --role-button-background-color: #22252d;
--code-example-good-color: #3fb950;
--code-example-bad-color: #f85149;
@@ -1844,3 +1848,18 @@ p + .classref-constant {
#godot-giscus {
margin-bottom: 1em;
}
+
+/* Custom Sphinx roles for editor UI */
+/* The :ui: and :inspector: roles just render as bold. */
+.role-ui {
+ font-weight: 700;
+}
+
+.role-button, .role-menu {
+ font-size: 80%;
+ border-radius: 4px;
+ padding: 2.4px 6px;
+ margin: auto 2px;
+ border: 0px solid #7fbbe3;
+ background: var(--role-button-background-color);
+}
diff --git a/_styleguides/de.md b/_styleguides/de.md
index 649cdcefe..a75364c66 100644
--- a/_styleguides/de.md
+++ b/_styleguides/de.md
@@ -8,7 +8,7 @@ Lesbarkeit, Klarheit und Benutzbarkeit besonders im Vordergrund stehen.
Für die Übersetzung selbst ist das Tool
[Weblate](https://hosted.weblate.org/projects/godot-engine/) im Einsatz, das in der
-[offiziellen Dokumentation](https://docs.godotengine.org/de/4.x/contributing/documentation/editor_and_docs_localization.html) näher
+[offiziellen Dokumentation](https://contributing.godotengine.org/en/latest/documentation/translation/index.html) näher
erläutert wird. Die Bedienung von Weblate ist nicht Bestandteil dieses
Dokuments.
@@ -357,8 +357,8 @@ mit übersetzt werden sollten.
Für Übersetzungen des Editors und der Properties ist es ratsam, diese
auch selbst zu testen, indem
-man [die aktuelle Übersetzung herunterlädt](https://docs.godotengine.org/de/4.x/contributing/documentation/editor_and_docs_localization.html#offline-translation-and-testing)
-und Godot mit den Änderungen [selbst kompiliert](https://docs.godotengine.org/de/4.x/contributing/development/compiling/compiling_for_windows.html).
+man [die aktuelle Übersetzung herunterlädt](https://contributing.godotengine.org/en/latest/documentation/translation/index.html#offline-translation-and-testing)
+und Godot mit den Änderungen [selbst kompiliert](https://docs.godotengine.org/de/4.x/engine_details/development/compiling/compiling_for_windows.html).
Gerade bei der Anleitung kommt es oft auf den Kontext zwischen benachbarten
Textblöcken an, sodass das Lesen eines ganzen Artikels Fehler sichtbar
diff --git a/_templates/breadcrumbs.html b/_templates/breadcrumbs.html
index d7e3dfd38..bf1f8389a 100644
--- a/_templates/breadcrumbs.html
+++ b/_templates/breadcrumbs.html
@@ -32,7 +32,7 @@
}
}
-
+
Learn how to contribute!
diff --git a/_tools/check-rst.sh b/_tools/check-rst.sh
new file mode 100755
index 000000000..3abb28cbc
--- /dev/null
+++ b/_tools/check-rst.sh
@@ -0,0 +1,10 @@
+#!/usr/bin/env bash
+
+set -uo pipefail
+
+output=$(grep -r -P '^(?!\s*\.\.).*\S::$' --include='*.rst' --exclude='docs_writing_guidelines.rst' .)
+if [[ -n $output ]]; then
+ echo 'The shorthand codeblock syntax (trailing `::`) is not allowed.'
+ echo "$output"
+ exit 1
+fi
diff --git a/_tools/redirects/redirects.csv b/_tools/redirects/redirects.csv
index 8abf40579..22ac665d1 100644
--- a/_tools/redirects/redirects.csv
+++ b/_tools/redirects/redirects.csv
@@ -2,22 +2,6 @@ source,destination
/about/index.html,/index.html
/about/troubleshooting.html,/tutorials/troubleshooting.html
/classes/_classes.html,/classes/
-/community/contributing/best_practices_for_engine_contributors.html,/contributing/development/best_practices_for_engine_contributors.html
-/community/contributing/bisecting_regressions.html,/contributing/workflow/bisecting_regressions.html
-/community/contributing/bug_triage_guidelines.html,/contributing/workflow/bug_triage_guidelines.html
-/community/contributing/building_the_manual.html,/contributing/documentation/building_the_manual.html
-/community/contributing/class_reference_writing_guidelines.html,/contributing/documentation/class_reference_primer.html
-/community/contributing/code_style_guidelines.html,/contributing/development/code_style_guidelines.html
-/community/contributing/content_guidelines.html,/contributing/documentation/content_guidelines.html
-/community/contributing/contributing_to_the_documentation.html,/contributing/documentation/contributing_to_the_documentation.html
-/community/contributing/cpp_usage_guidelines.html,/contributing/development/cpp_usage_guidelines.html
-/community/contributing/docs_writing_guidelines.html,/contributing/documentation/docs_writing_guidelines.html
-/community/contributing/editor_and_docs_localization.html,/contributing/documentation/editor_and_docs_localization.html
-/community/contributing/index.html,/contributing/ways_to_contribute.html
-/community/contributing/pr_workflow.html,/contributing/workflow/pr_workflow.html
-/community/contributing/testing_pull_requests.html,/contributing/workflow/testing_pull_requests.html
-/community/contributing/updating_the_class_reference.html,/contributing/documentation/updating_the_class_reference.html
-/community/contributing/ways_to_contribute.html,/contributing/ways_to_contribute.html
/community/tutorials/3d/mesh_generation_with_heightmap_and_shaders.html,/tutorials/3d/mesh_generation_with_heightmap_and_shaders.html
/community/tutorials/gdnative/gdnative-c-example.html,/tutorials/plugins/gdnative/gdnative-c-example.html
/community/tutorials/gdnative/index.html,/tutorials/plugins/gdnative/index.html
@@ -25,61 +9,56 @@ source,destination
/community/tutorials/vr/vr_primer.html,/tutorials/vr/vr_primer.html
/content/3d/making_trees.html,/tutorials/content/making_trees.html
/contributing/_contributing.html,/community/contributing/
-/contributing/bug_triage_guidelines.html,/community/contributing/bug_triage_guidelines.html
-/contributing/development/compiling/compiling_with_mono.html,/contributing/development/compiling/compiling_with_dotnet.html
-/contributing/development/core_and_modules/introduction_to_godot_development.html,/contributing/development/core_and_modules/index.html
-/contributing/doc_and_l10n_guidelines.html,/community/contributing/doc_and_l10n_guidelines.html
-/contributing/updating_the_class_reference.html,/community/contributing/updating_the_class_reference.html
-/contributing/ways_to_contribute.html,/contributing/how_to_contribute.html
-/development/compiling/compiling_for_android.html,/contributing/development/compiling/compiling_for_android.html
-/development/compiling/compiling_for_ios.html,/contributing/development/compiling/compiling_for_ios.html
-/development/compiling/compiling_for_linuxbsd.html,/contributing/development/compiling/compiling_for_linuxbsd.html
-/development/compiling/compiling_for_macos.html,/contributing/development/compiling/compiling_for_macos.html
-/development/compiling/compiling_for_uwp.html,/contributing/development/compiling/compiling_for_uwp.html
-/development/compiling/compiling_for_web.html,/contributing/development/compiling/compiling_for_web.html
-/development/compiling/compiling_for_windows.html,/contributing/development/compiling/compiling_for_windows.html
-/development/compiling/compiling_for_x11.html,/contributing/development/compiling/compiling_for_linuxbsd.html
-/development/compiling/compiling_with_mono.html,/contributing/development/compiling/compiling_with_mono.html
-/development/compiling/compiling_with_script_encryption_key.html,/contributing/development/compiling/compiling_with_script_encryption_key.html
-/development/compiling/cross-compiling_for_ios_on_linux.html,/contributing/development/compiling/cross-compiling_for_ios_on_linux.html
-/development/compiling/getting_source.html,/contributing/development/compiling/getting_source.html
-/development/compiling/index.html,/contributing/development/compiling/index.html
-/development/compiling/introduction_to_the_buildsystem.html,/contributing/development/compiling/introduction_to_the_buildsystem.html
-/development/compiling/optimizing_for_size.html,/contributing/development/compiling/optimizing_for_size.html
+/contributing/development/compiling/compiling_with_mono.html,/engine_details/development/compiling/compiling_with_dotnet.html
+/contributing/development/core_and_modules/introduction_to_godot_development.html,/engine_details/development/core_and_modules/index.html
+/development/compiling/compiling_for_android.html,/engine_details/development/compiling/compiling_for_android.html
+/development/compiling/compiling_for_ios.html,/engine_details/development/compiling/compiling_for_ios.html
+/development/compiling/compiling_for_linuxbsd.html,/engine_details/development/compiling/compiling_for_linuxbsd.html
+/development/compiling/compiling_for_macos.html,/engine_details/development/compiling/compiling_for_macos.html
+/development/compiling/compiling_for_uwp.html,/engine_details/development/compiling/compiling_for_uwp.html
+/development/compiling/compiling_for_web.html,/engine_details/development/compiling/compiling_for_web.html
+/development/compiling/compiling_for_windows.html,/engine_details/development/compiling/compiling_for_windows.html
+/development/compiling/compiling_for_x11.html,/engine_details/development/compiling/compiling_for_linuxbsd.html
+/development/compiling/compiling_with_mono.html,/engine_details/development/compiling/compiling_with_mono.html
+/development/compiling/compiling_with_script_encryption_key.html,/engine_details/development/compiling/compiling_with_script_encryption_key.html
+/development/compiling/cross-compiling_for_ios_on_linux.html,/engine_details/development/compiling/cross-compiling_for_ios_on_linux.html
+/development/compiling/getting_source.html,/engine_details/development/compiling/getting_source.html
+/development/compiling/index.html,/engine_details/development/compiling/index.html
+/development/compiling/introduction_to_the_buildsystem.html,/engine_details/development/compiling/introduction_to_the_buildsystem.html
+/development/compiling/optimizing_for_size.html,/engine_details/development/compiling/optimizing_for_size.html
/development/consoles/consoles.html,/tutorials/platform/consoles.html
-/development/cpp/binding_to_external_libraries.html,/contributing/development/core_and_modules/binding_to_external_libraries.html
-/development/cpp/common_engine_methods_and_macros.html,/contributing/development/core_and_modules/common_engine_methods_and_macros.html
-/development/cpp/configuring_an_ide/android_studio.html,/contributing/development/configuring_an_ide/android_studio.html
-/development/cpp/configuring_an_ide/clion.html,/contributing/development/configuring_an_ide/clion.html
-/development/cpp/configuring_an_ide/code_blocks.html,/contributing/development/configuring_an_ide/code_blocks.html
-/development/cpp/configuring_an_ide/index.html,/contributing/development/configuring_an_ide/index.html
-/development/cpp/configuring_an_ide/kdevelop.html,/contributing/development/configuring_an_ide/kdevelop.html
-/development/cpp/configuring_an_ide/qt_creator.html,/contributing/development/configuring_an_ide/qt_creator.html
-/development/cpp/configuring_an_ide/visual_studio.html,/contributing/development/configuring_an_ide/visual_studio.html
-/development/cpp/configuring_an_ide/visual_studio_code.html,/contributing/development/configuring_an_ide/visual_studio_code.html
-/development/cpp/configuring_an_ide/xcode.html,/contributing/development/configuring_an_ide/xcode.html
-/development/cpp/core_types.html,/contributing/development/core_and_modules/core_types.html
-/development/cpp/custom_audiostreams.html,/contributing/development/core_and_modules/custom_audiostreams.html
-/development/cpp/custom_godot_servers.html,/contributing/development/core_and_modules/custom_godot_servers.html
-/development/cpp/custom_modules_in_cpp.html,/contributing/development/core_and_modules/custom_modules_in_cpp.html
-/development/cpp/custom_resource_format_loaders.html,/contributing/development/core_and_modules/custom_resource_format_loaders.html
-/development/cpp/index.html,/contributing/development/core_and_modules/index.html
-/development/cpp/inheritance_class_tree.html,/contributing/development/core_and_modules/inheritance_class_tree.html
-/development/cpp/introduction_to_godot_development.html,/contributing/development/core_and_modules/introduction_to_godot_development.html
-/development/cpp/macos_debug.html,/contributing/development/debugging/macos_debug.html
-/development/cpp/object_class.html,/contributing/development/core_and_modules/object_class.html
-/development/cpp/unit_testing.html,/contributing/development/core_and_modules/unit_testing.html
-/development/cpp/using_cpp_profilers.html,/contributing/development/debugging/using_cpp_profilers.html
-/development/cpp/variant_class.html,/contributing/development/core_and_modules/variant_class.html
-/development/cpp/vulkan/index.html,/contributing/development/debugging/vulkan/index.html
-/development/cpp/vulkan/vulkan_validation_layers.html,/contributing/development/debugging/vulkan/vulkan_validation_layers.html
-/development/editor/creating_icons.html,/contributing/development/editor/creating_icons.html
-/development/editor/editor_style_guide.html,/contributing/development/editor/editor_style_guide.html
-/development/editor/index.html,/contributing/development/editor/index.html
-/development/editor/introduction_to_editor_development.html,/contributing/development/editor/introduction_to_editor_development.html
-/development/file_formats/gdscript_grammar.html,/contributing/development/file_formats/gdscript_grammar.html
-/development/file_formats/index.html,/contributing/development/file_formats/index.html
-/development/file_formats/tscn.html,/contributing/development/file_formats/tscn.html
+/development/cpp/binding_to_external_libraries.html,/engine_details/development/core_and_modules/binding_to_external_libraries.html
+/development/cpp/common_engine_methods_and_macros.html,/engine_details/development/core_and_modules/common_engine_methods_and_macros.html
+/development/cpp/configuring_an_ide/android_studio.html,/engine_details/development/configuring_an_ide/android_studio.html
+/development/cpp/configuring_an_ide/clion.html,/engine_details/development/configuring_an_ide/clion.html
+/development/cpp/configuring_an_ide/code_blocks.html,/engine_details/development/configuring_an_ide/code_blocks.html
+/development/cpp/configuring_an_ide/index.html,/engine_details/development/configuring_an_ide/index.html
+/development/cpp/configuring_an_ide/kdevelop.html,/engine_details/development/configuring_an_ide/kdevelop.html
+/development/cpp/configuring_an_ide/qt_creator.html,/engine_details/development/configuring_an_ide/qt_creator.html
+/development/cpp/configuring_an_ide/visual_studio.html,/engine_details/development/configuring_an_ide/visual_studio.html
+/development/cpp/configuring_an_ide/visual_studio_code.html,/engine_details/development/configuring_an_ide/visual_studio_code.html
+/development/cpp/configuring_an_ide/xcode.html,/engine_details/development/configuring_an_ide/xcode.html
+/development/cpp/core_types.html,/engine_details/development/core_and_modules/core_types.html
+/development/cpp/custom_audiostreams.html,/engine_details/development/core_and_modules/custom_audiostreams.html
+/development/cpp/custom_godot_servers.html,/engine_details/development/core_and_modules/custom_godot_servers.html
+/development/cpp/custom_modules_in_cpp.html,/engine_details/development/core_and_modules/custom_modules_in_cpp.html
+/development/cpp/custom_resource_format_loaders.html,/engine_details/development/core_and_modules/custom_resource_format_loaders.html
+/development/cpp/index.html,/engine_details/development/core_and_modules/index.html
+/development/cpp/inheritance_class_tree.html,/engine_details/development/core_and_modules/inheritance_class_tree.html
+/development/cpp/introduction_to_godot_development.html,/engine_details/development/core_and_modules/introduction_to_godot_development.html
+/development/cpp/macos_debug.html,/engine_details/development/debugging/macos_debug.html
+/development/cpp/object_class.html,/engine_details/development/core_and_modules/object_class.html
+/development/cpp/unit_testing.html,/engine_details/development/core_and_modules/unit_testing.html
+/development/cpp/using_cpp_profilers.html,/engine_details/development/debugging/using_cpp_profilers.html
+/development/cpp/variant_class.html,/engine_details/development/core_and_modules/variant_class.html
+/development/cpp/vulkan/index.html,/engine_details/development/debugging/vulkan/index.html
+/development/cpp/vulkan/vulkan_validation_layers.html,/engine_details/development/debugging/vulkan/vulkan_validation_layers.html
+/development/editor/creating_icons.html,/engine_details/editor/creating_icons.html
+/development/editor/index.html,/engine_details/editor/index.html
+/development/editor/introduction_to_editor_development.html,/engine_details/editor/introduction_to_editor_development.html
+/development/file_formats/gdscript_grammar.html,/engine_details/development/file_formats/gdscript_grammar.html
+/development/file_formats/index.html,/engine_details/development/file_formats/index.html
+/development/file_formats/tscn.html,/engine_details/development/file_formats/tscn.html
/development/plugins/import_plugins.html,/tutorials/plugins/editor/import_plugins.html
/development/plugins/index.html,/tutorials/plugins/editor/index.html
/development/plugins/making_plugins.html,/tutorials/plugins/editor/making_plugins.html
@@ -399,8 +378,9 @@ source,destination
/tutorials/plugins/gdnative/gdnative-c-example.html,/tutorials/scripting/gdnative/gdnative_c_example.html
/tutorials/plugins/gdnative/gdnative-cpp-example.html,/tutorials/scripting/gdnative/gdnative_cpp_example.html
/tutorials/plugins/gdnative/index.html,/tutorials/scripting/gdnative/index.html
-/tutorials/scripting/gdnative/gdnative_c_example.html,/tutorials/plugins/gdextension/gdextension_cpp_example.html
-/tutorials/scripting/gdnative/gdnative_cpp_example.html,/tutorials/plugins/gdextension/gdextension_cpp_example.html
+/tutorials/plugins/gdextension/gdextension_cpp_example.html,/tutorials/plugins/cpp/gdextension_cpp_example.html
+/tutorials/scripting/gdnative/gdnative_c_example.html,/tutorials/plugins/cpp/gdextension_cpp_example.html
+/tutorials/scripting/gdnative/gdnative_cpp_example.html,/tutorials/plugins/cpp/gdextension_cpp_example.html
/tutorials/scripting/gdnative/index.html,/tutorials/scripting/gdextension/index.html
/tutorials/scripting/gdnative/what_is_gdnative.html,/tutorials/scripting/gdnative/what_is_gdextension.html
/tutorials/shading/advanced_postprocessing.html,/tutorials/shaders/advanced_postprocessing.html
diff --git a/_tools/redirects/requirements.txt b/_tools/redirects/requirements.txt
index e8bee6fe6..987545961 100644
--- a/_tools/redirects/requirements.txt
+++ b/_tools/redirects/requirements.txt
@@ -1,2 +1,2 @@
python-dotenv==0.18.0
-requests==2.32.0
+requests==2.32.4
diff --git a/about/complying_with_licenses.rst b/about/complying_with_licenses.rst
index b0f6cb977..0ce3a63d3 100644
--- a/about/complying_with_licenses.rst
+++ b/about/complying_with_licenses.rst
@@ -27,7 +27,7 @@ with the original one.
This section covers compliance with licenses from a user perspective.
If you are interested in licence compliance as a contributor, you can find
- guidelines :ref:`here `.
+ guidelines `here `__.
.. tip::
@@ -42,7 +42,9 @@ Requirements
In the case of the MIT license, the only requirement is to include the license
text somewhere in your game or derivative project.
-This text reads as follows::
+This text reads as follows:
+
+::
This game uses Godot Engine, available under the following license:
diff --git a/about/docs_changelog.rst b/about/docs_changelog.rst
index 2ff6a8b31..4497b294f 100644
--- a/about/docs_changelog.rst
+++ b/about/docs_changelog.rst
@@ -78,13 +78,12 @@ Contributing
~~~~~~~~~~~~
- :ref:`doc_handling_compatibility_breakages`
-- :ref:`doc_ways_to_contribute`
GDExtension
~~~~~~~~~~~
- :ref:`doc_gdextension_file`
-- :ref:`doc_gdextension_docs_system`
+- :ref:`doc_godot_cpp_docs_system`
Migrating
~~~~~~~~~
@@ -215,11 +214,6 @@ Shaders
- :ref:`doc_compute_shaders`
-Workflow
-~~~~~~~~
-
-- :ref:`doc_pr_review_guidelines`
-
XR
~~
@@ -253,11 +247,6 @@ Editor
New pages since version 3.3
---------------------------
-C++
-~~~
-
-- :ref:`doc_cpp_usage_guidelines`
-
GDScript
~~~~~~~~
@@ -283,19 +272,10 @@ Best practices
- :ref:`doc_version_control_systems`
-Community
-~~~~~~~~~
-
-- :ref:`doc_best_practices_for_engine_contributors`
-- :ref:`doc_bisecting_regressions`
-- :ref:`doc_editor_and_docs_localization`
-
Development
~~~~~~~~~~~
-- :ref:`doc_introduction_to_editor_development`
-- :ref:`doc_editor_style_guide`
-- :ref:`doc_common_engine_methods_and_macros`
+- :ref:`doc_common_engine_methods_and_macros_error_macros`
- :ref:`doc_vulkan_validation_layers`
- :ref:`doc_gdscript_grammar`
- Configuring an IDE: :ref:`doc_configuring_an_ide_code_blocks`
diff --git a/about/faq.rst b/about/faq.rst
index 8f6ff66cb..1b8a76a3a 100644
--- a/about/faq.rst
+++ b/about/faq.rst
@@ -448,7 +448,7 @@ compile the engine from sources, or how to build the documentation. You also nee
get familiar with Git, a version control system that Godot developers use.
We explain how to work with the engine source, how to edit the documentation, and
-what other ways to contribute are there in our :ref:`documentation for contributors `.
+what other ways to contribute are there in our `documentation for contributors `__.
I have a great idea for Godot. How can I share it?
--------------------------------------------------
@@ -579,6 +579,8 @@ general-purpose library, but we had special requirements for Godot.
* We use our custom String type, as the one provided by STL is too basic and lacks proper
internationalization support.
+Check out :ref:`Godot's container types ` for alternatives.
+
Why does Godot not use exceptions?
----------------------------------
@@ -627,7 +629,7 @@ for the rest of the game.
How can I support Godot development or contribute?
--------------------------------------------------
-See :ref:`doc_ways_to_contribute`.
+See `How to contribute `__.
Who is working on Godot? How can I contact you?
-----------------------------------------------
diff --git a/about/introduction.rst b/about/introduction.rst
index 20c188474..06454b207 100644
--- a/about/introduction.rst
+++ b/about/introduction.rst
@@ -77,11 +77,8 @@ This documentation is organized into several sections:
if you're new!**
- The **Manual** can be read or referenced as needed,
in any order. It contains feature-specific tutorials and documentation.
-- **Contributing** gives information related to contributing to
- Godot, whether to the core engine, documentation, demos or other parts.
- It describes how to report bugs, how contributor workflows are organized, etc.
- It also contains sections intended for advanced users and contributors,
- with information on compiling the engine, contributing to the editor,
+- **Engine details** contains sections intended for advanced users and contributors,
+ with information on compiling the engine, working on the editor,
or developing C++ modules.
- **Community** is dedicated to the life of Godot's community and contains a list of
recommended third-party tutorials and materials outside of this documentation.
@@ -100,8 +97,8 @@ About this documentation
Members of the Godot Engine community continuously write, correct, edit, and
improve this documentation. We are always looking for more help. You can also
contribute by opening Github issues or translating the documentation into your language.
-If you are interested in helping, see :ref:`Ways to contribute `
-and :ref:`Writing documentation `,
+If you are interested in helping, see `How to contribute `__
+and `Writing documentation `__,
or get in touch with the `Documentation team `_
on `Godot Contributors Chat `_.
diff --git a/about/list_of_features.rst b/about/list_of_features.rst
index dfcedbdb6..b3fcee157 100644
--- a/about/list_of_features.rst
+++ b/about/list_of_features.rst
@@ -36,6 +36,13 @@ Platforms
- :ref:`Web browsers `. Experimental in 4.0,
using Godot 3.x is recommended instead when targeting HTML5.
+.. note::
+
+ Linux supports rv64 (RISC-V), ppc64 & ppc32 (PowerPC), and loongarch64. However
+ you must compile the editor for that platform (as well as export templates)
+ yourself, no official downloads are currently provided. RISC-V compiling
+ instructions can be found on the :ref:`doc_compiling_for_linuxbsd` page.
+
**Runs exported projects:**
- iOS.
@@ -346,7 +353,7 @@ See :ref:`doc_renderers` for a detailed comparison of the rendering methods.
**Post-processing:**
-- Tonemapping (Linear, Reinhard, Filmic, ACES).
+- Tonemapping (Linear, Reinhard, Filmic, ACES, AgX).
- Automatic exposure adjustments based on viewport brightness (and manual exposure override).
- Near and far depth of field with adjustable bokeh simulation (box, hexagon, circle).
- Screen-space ambient occlusion (SSAO) at half or full resolution.
@@ -645,6 +652,8 @@ Mobile
and :ref:`iOS `.
- Support for advertisements using third-party modules.
+.. _doc_xr_support:
+
XR support (AR and VR)
----------------------
@@ -656,6 +665,11 @@ XR support (AR and VR)
- Including support for popular stand alone headsets like the Meta Quest 1/2/3 and Pro, Pico 4, Magic Leap 2, and Lynx R1.
+- Out of the box limited support for visionOS Apple headsets.
+
+ - Currently only exporting an application for use on a flat plane within the
+ headset is supported. Immersive experiences are not supported.
+
- Other devices supported through an XR plugin structure.
- Various advanced toolkits are available that implement common features required by XR applications.
@@ -774,7 +788,7 @@ Miscellaneous
- Licensed under the permissive MIT license.
- - Open development process with :ref:`contributions welcome `.
+ - Open development process with `contributions welcome `__.
.. seealso::
diff --git a/about/system_requirements.rst b/about/system_requirements.rst
index 673840dc1..2a095eaf1 100644
--- a/about/system_requirements.rst
+++ b/about/system_requirements.rst
@@ -23,25 +23,26 @@ Desktop or laptop PC - Minimum
.. which can run up to macOS 10.13.
+----------------------+-----------------------------------------------------------------------------------------+
-| **CPU** | - **Windows:** x86_32 CPU with SSE2 instructions, x86_64 CPU, ARMv8 CPU |
+| **CPU** | - **Windows:** x86_32 CPU with SSE2 support, x86_64 CPU with SSE4.2 support, ARMv8 CPU |
| | |
-| | - *Example: Intel Core 2 Duo E8200, AMD Athlon XE BE-2300, Snapdragon X Elite* |
+| | - *Example: Intel Core 2 Duo E8200, AMD FX-4100, Snapdragon X Elite* |
| | |
| | - **macOS:** x86_64 or ARM CPU (Apple Silicon) |
| | |
| | - *Example: Intel Core 2 Duo SU9400, Apple M1* |
| | |
-| | - **Linux:** x86_32 CPU with SSE2 instructions, x86_64 CPU, ARMv7 or ARMv8 CPU |
+| | - **Linux:** x86_32 CPU with SSE2 support, x86_64 CPU with SSE4.2 support, ARMv7 or |
+| | ARMv8 CPU |
| | |
-| | - *Example: Intel Core 2 Duo E8200, AMD Athlon XE BE-2300, Raspberry Pi 4* |
+| | - *Example: Intel Core 2 Duo E8200, AMD FX-4100, Raspberry Pi 4* |
+----------------------+-----------------------------------------------------------------------------------------+
| **GPU** | - **Forward+ renderer:** Integrated graphics with full Vulkan 1.0 support |
| | |
-| | - *Example: Intel HD Graphics 5500 (Broadwell), AMD Radeon R5 Graphics (Kaveri)* |
+| | - *Example: Intel HD Graphics 510 (Skylake), AMD Radeon R5 Graphics (Kaveri)* |
| | |
| | - **Mobile renderer:** Integrated graphics with full Vulkan 1.0 support |
| | |
-| | - *Example: Intel HD Graphics 5500 (Broadwell), AMD Radeon R5 Graphics (Kaveri)* |
+| | - *Example: Intel HD Graphics 510 (Skylake), AMD Radeon R5 Graphics (Kaveri)* |
| | |
| | - **Compatibility renderer:** Integrated graphics with full OpenGL 3.3 support |
| | |
@@ -54,22 +55,22 @@ Desktop or laptop PC - Minimum
| | Exporting projects requires downloading export templates separately |
| | (1.3 GB after installation). |
+----------------------+-----------------------------------------------------------------------------------------+
-| **Operating system** | - **Native editor:** Windows 7, macOS 10.13 (Compatibility) or |
-| | macOS 10.15 (Forward+/Mobile), Linux distribution released after 2016 |
-| | - **Web editor:** Firefox 79, Chrome 68, Edge 79, Safari 15.2, Opera 64 |
+| **Operating system** | - **Native editor:** Windows 10, macOS 10.13 (Compatibility) or |
+| | macOS 10.15 (Forward+/Mobile), Linux distribution released after 2018 |
+| | - **Web editor:** Recent versions of mainstream browsers: Firefox and derivatives |
+| | (including ESR), Chrome and Chromium derivatives, Safari and WebKit derivatives. |
+----------------------+-----------------------------------------------------------------------------------------+
.. note::
- Windows 7/8/8.1 are supported on a best-effort basis. These versions are not
- regularly tested and some features may be missing (such as colored
- :ref:`print_rich ` console output).
- Support for Windows 7/8/8.1 may be removed in a
- :ref:`future Godot 4.x release `.
+ If your x86_64 CPU does not support SSE4.2, you can still run the 32-bit Godot
+ executable which only has a SSE2 requirement (all x86_64 CPUs support SSE2).
- Vulkan drivers for these Windows versions are known to have issues with
- memory leaks. As a result, it's recommended to stick to the Compatibility
- renderer when running Godot on a Windows version older than 10.
+ While supported on Linux, we have no official minimum requirements for running on
+ rv64 (RISC-V), ppc64 & ppc32 (PowerPC), and loongarch64. In addition you must
+ compile the editor for that platform (as well as export templates) yourself,
+ no official downloads are currently provided. RISC-V compiling instructions can
+ be found on the :ref:`doc_compiling_for_linuxbsd` page.
Mobile device (smartphone/tablet) - Minimum
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -101,8 +102,8 @@ Mobile device (smartphone/tablet) - Minimum
| | (1.3 GB after installation) |
+----------------------+-----------------------------------------------------------------------------------------+
| **Operating system** | - **Native editor:** Android 6.0 (Compatibility) or Android 9.0 (Forward+/Mobile) |
-| | - **Web editor:** Firefox 79, Chrome 88, Edge 79, Safari 15.2, Opera 64, |
-| | Samsung Internet 15 |
+| | - **Web editor:** Recent versions of mainstream browsers: Firefox and derivatives |
+| | (including ESR), Chrome and Chromium derivatives, Safari and WebKit derivatives. |
+----------------------+-----------------------------------------------------------------------------------------+
These are the **recommended** specifications to get a smooth experience with the
@@ -112,7 +113,7 @@ Desktop or laptop PC - Recommended
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+----------------------+---------------------------------------------------------------------------------------------+
-| **CPU** | - **Windows:** x86_64 CPU with SSE4.2 instructions, with 4 physical cores or more, ARMv8 CPU|
+| **CPU** | - **Windows:** x86_64 CPU with SSE4.2 support, with 4 physical cores or more, ARMv8 CPU |
| | |
| | - *Example: Intel Core i5-6600K, AMD Ryzen 5 1600, Snapdragon X Elite* |
| | |
@@ -120,7 +121,7 @@ Desktop or laptop PC - Recommended
| | |
| | - *Example: Intel Core i5-8500, Apple M1* |
| | |
-| | - **Linux:** x86_32 CPU with SSE2 instructions, x86_64 CPU, ARMv7 or ARMv8 CPU |
+| | - **Linux:** x86_64 CPU with SSE4.2 support, ARMv7 or ARMv8 CPU |
| | |
| | - *Example: Intel Core i5-6600K, AMD Ryzen 5 1600, Raspberry Pi 5 with overclocking* |
+----------------------+---------------------------------------------------------------------------------------------+
@@ -207,27 +208,29 @@ Desktop or laptop PC - Minimum
.. which can run up to macOS 10.13.
+----------------------+-----------------------------------------------------------------------------------------+
-| **CPU** | - **Windows:** x86_32 CPU with SSE2 instructions, any x86_64 CPU, ARMv8 CPU |
+| **CPU** | - **Windows:** x86_32 CPU with SSE2 support, x86_64 CPU with SSE4.2 support, |
+| | ARMv8 CPU |
| | |
-| | - *Example: Intel Core 2 Duo E8200, AMD Athlon XE BE-2300, Snapdragon X Elite* |
+| | - *Example: Intel Core 2 Duo E8200, AMD FX-4100, Snapdragon X Elite* |
| | |
| | - **macOS:** x86_64 or ARM CPU (Apple Silicon) |
| | |
| | - *Example: Intel Core 2 Duo SU9400, Apple M1* |
| | |
-| | - **Linux:** x86_32 CPU with SSE2 instructions, x86_64 CPU, ARMv7 or ARMv8 CPU |
+| | - **Linux:** x86_32 CPU with SSE2 support, x86_64 CPU with SSE4.2 support, |
+| | ARMv7 or ARMv8 CPU |
| | |
-| | - *Example: Intel Core 2 Duo E8200, AMD Athlon XE BE-2300, Raspberry Pi 4* |
+| | - *Example: Intel Core 2 Duo E8200, AMD FX-4100, Raspberry Pi 4* |
+----------------------+-----------------------------------------------------------------------------------------+
| **GPU** | - **Forward+ renderer:** Integrated graphics with full Vulkan 1.0 support, |
| | Metal 3 support (macOS) or Direct3D 12 (12_0 feature level) support (Windows) |
| | |
-| | - *Example: Intel HD Graphics 5500 (Broadwell), AMD Radeon R5 Graphics (Kaveri)* |
+| | - *Example: Intel HD Graphics 510 (Skylake), AMD Radeon R5 Graphics (Kaveri)* |
| | |
| | - **Mobile renderer:** Integrated graphics with full Vulkan 1.0 support, |
| | Metal 3 support (macOS) or Direct3D 12 (12_0 feature level) support (Windows) |
| | |
-| | - *Example: Intel HD Graphics 5500 (Broadwell), AMD Radeon R5 Graphics (Kaveri)* |
+| | - *Example: Intel HD Graphics 510 (Skylake), AMD Radeon R5 Graphics (Kaveri)* |
| | |
| | - **Compatibility renderer:** Integrated graphics with full OpenGL 3.3 support |
| | or Direct3D 11 support (Windows). |
@@ -239,25 +242,13 @@ Desktop or laptop PC - Minimum
+----------------------+-----------------------------------------------------------------------------------------+
| **Storage** | 150 MB (used for the executable, project files and cache) |
+----------------------+-----------------------------------------------------------------------------------------+
-| **Operating system** | - **For native exports:** Windows 7 (Compatibility and Forward+/Mobile, Vulkan), |
-| | Windows 10 (Forward+/Mobile, Direct3D 12), macOS 10.13 (Compatibility), macOS 10.15 |
+| **Operating system** | - **For native exports:** Windows 10, macOS 10.13 (Compatibility), macOS 10.15 |
| | (Forward+/Mobile, Vulkan), macOS 13.0 (Forward+/Mobile, Metal), Linux distribution |
-| | released after 2016 |
-| | - **For web exports:** Firefox 79, Chrome 68, Edge 79, Safari 15.2, Opera 64 |
+| | released after 2018 |
+| | - **Web editor:** Recent versions of mainstream browsers: Firefox and derivatives |
+| | (including ESR), Chrome and Chromium derivatives, Safari and WebKit derivatives. |
+----------------------+-----------------------------------------------------------------------------------------+
-.. note::
-
- Windows 7/8/8.1 are supported on a best-effort basis. These versions are not
- regularly tested and some features may be missing (such as colored
- :ref:`print_rich ` console output).
- Support for Windows 7/8/8.1 may be removed in a
- :ref:`future Godot 4.x release `.
-
- Vulkan drivers for these Windows versions are known to have issues with
- memory leaks. As a result, it's recommended to stick to the Compatibility
- renderer when running Godot on a Windows version older than 10.
-
Mobile device (smartphone/tablet) - Minimum
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -293,8 +284,8 @@ Mobile device (smartphone/tablet) - Minimum
+----------------------+-----------------------------------------------------------------------------------------+
| **Operating system** | - **For native exports:** Android 6.0 (Compatibility), Android 9.0 (Forward+/Mobile), |
| | iOS 12.0 (Forward+/Mobile, Vulkan), iOS 16.0 (Forward+/Mobile, Metal) |
-| | - **For web exports:** Firefox 79, Chrome 88, Edge 79, Safari 15.2, Opera 64, |
-| | Samsung Internet 15 |
+| | - **Web editor:** Recent versions of mainstream browsers: Firefox and derivatives |
+| | (including ESR), Chrome and Chromium derivatives, Safari and WebKit derivatives. |
+----------------------+-----------------------------------------------------------------------------------------+
These are the **recommended** specifications to get a smooth experience with a
@@ -304,7 +295,7 @@ Desktop or laptop PC - Recommended
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+----------------------+----------------------------------------------------------------------------------------------+
-| **CPU** | - **Windows:** x86_64 CPU with SSE4.2 instructions, with 4 physical cores or more, ARMv8 CPU |
+| **CPU** | - **Windows:** x86_64 CPU with SSE4.2 support, with 4 physical cores or more, ARMv8 CPU |
| | |
| | - *Example: Intel Core i5-6600K, AMD Ryzen 5 1600, Snapdragon X Elite* |
| | |
@@ -312,7 +303,8 @@ Desktop or laptop PC - Recommended
| | |
| | - *Example: Intel Core i5-8500, Apple M1* |
| | |
-| | - **Linux:** x86_32 CPU with SSE2 instructions, x86_64 CPU, ARMv7 or ARMv8 CPU |
+| | - **Linux:** x86_64 CPU with SSE4.2 support, with 4 physical cores or more, |
+| | ARMv7 or ARMv8 CPU |
| | |
| | - *Example: Intel Core i5-6600K, AMD Ryzen 5 1600, Raspberry Pi 5 with overclocking* |
+----------------------+----------------------------------------------------------------------------------------------+
diff --git a/classes/class_@gdscript.rst b/classes/class_@gdscript.rst
index 4f5e6008a..9491dcf8f 100644
--- a/classes/class_@gdscript.rst
+++ b/classes/class_@gdscript.rst
@@ -41,7 +41,7 @@ Methods
+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`assert`\ (\ condition\: :ref:`bool`, message\: :ref:`String` = ""\ ) |
+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String` | :ref:`char`\ (\ char\: :ref:`int`\ ) |
+ | :ref:`String` | :ref:`char`\ (\ code\: :ref:`int`\ ) |
+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Variant` | :ref:`convert`\ (\ what\: :ref:`Variant`, type\: :ref:`Variant.Type`\ ) |
+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -57,6 +57,8 @@ Methods
+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Resource` | :ref:`load`\ (\ path\: :ref:`String`\ ) |
+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+ | :ref:`int` | :ref:`ord`\ (\ char\: :ref:`String`\ ) |
+ +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Resource` | :ref:`preload`\ (\ path\: :ref:`String`\ ) |
+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`print_debug`\ (\ ...\ ) |vararg| |
@@ -109,7 +111,9 @@ Positive floating-point infinity. This is the result of floating-point division
**NAN** = ``nan`` :ref:`🔗`
-"Not a Number", an invalid floating-point value. :ref:`NAN` has special properties, including that ``!=`` always returns ``true``, while other comparison operators always return ``false``. This is true even when comparing with itself (``NAN == NAN`` returns ``false`` and ``NAN != NAN`` returns ``true``). It is returned by some invalid operations, such as dividing floating-point ``0.0`` by ``0.0``.
+"Not a Number", an invalid floating-point value. It is returned by some invalid operations, such as dividing floating-point ``0.0`` by ``0.0``.
+
+\ :ref:`NAN` has special properties, including that ``!=`` always returns ``true``, while other comparison operators always return ``false``. This is true even when comparing with itself (``NAN == NAN`` returns ``false`` and ``NAN != NAN`` returns ``true``). Due to this, you must use :ref:`@GlobalScope.is_nan()` to check whether a number is equal to :ref:`NAN`.
\ **Warning:** "Not a Number" is only a concept with floating-point numbers, and has no equivalent for integers. Dividing an integer ``0`` by ``0`` will not result in :ref:`NAN` and will result in a run-time error instead.
@@ -120,6 +124,37 @@ Positive floating-point infinity. This is the result of floating-point division
Annotations
-----------
+.. _class_@GDScript_annotation_@abstract:
+
+.. rst-class:: classref-annotation
+
+**@abstract**\ (\ ) :ref:`🔗`
+
+Marks a class or a method as abstract.
+
+An abstract class is a class that cannot be instantiated directly. Instead, it is meant to be inherited by other classes. Attempting to instantiate an abstract class will result in an error.
+
+An abstract method is a method that has no implementation. Therefore, a newline or a semicolon is expected after the function header. This defines a contract that inheriting classes must conform to, because the method signature must be compatible when overriding.
+
+Inheriting classes must either provide implementations for all abstract methods, or the inheriting class must be marked as abstract. If a class has at least one abstract method (either its own or an unimplemented inherited one), then it must also be marked as abstract. However, the reverse is not true: an abstract class is allowed to have no abstract methods.
+
+::
+
+ @abstract class Shape:
+ @abstract func draw()
+
+ class Circle extends Shape:
+ func draw():
+ print("Drawing a circle.")
+
+ class Square extends Shape:
+ func draw():
+ print("Drawing a square.")
+
+.. rst-class:: classref-item-separator
+
+----
+
.. _class_@GDScript_annotation_@export:
.. rst-class:: classref-annotation
@@ -131,27 +166,27 @@ Mark the following property as exported (editable in the Inspector dock and save
::
extends Node
-
+
enum Direction {LEFT, RIGHT, UP, DOWN}
-
+
# Built-in types.
@export var string = ""
@export var int_number = 5
@export var float_number: float = 5
-
+
# Enums.
@export var type: Variant.Type
@export var format: Image.Format
@export var direction: Direction
-
+
# Resources.
@export var image: Image
@export var custom_resource: CustomResource
-
+
# Nodes.
@export var node: Node
@export var custom_node: CustomNode
-
+
# Typed arrays.
@export var int_array: Array[int]
@export var direction_array: Array[Direction]
@@ -259,7 +294,7 @@ See also :ref:`@GlobalScope.PROPERTY_HINT_ENUM` methods to convert it to path.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_@GDScript_annotation_@export_file_path:
+
+.. rst-class:: classref-annotation
+
+**@export_file_path**\ (\ filter\: :ref:`String` = "", ...\ ) |vararg| :ref:`🔗`
+
+Same as :ref:`@export_file`, except the file will be stored as a raw path. This means that it may become invalid when the file is moved. If you are exporting a :ref:`Resource` path, consider using :ref:`@export_file` instead.
+
.. rst-class:: classref-item-separator
----
@@ -564,11 +613,11 @@ See also :ref:`@GlobalScope.PROPERTY_USAGE_GROUP` cannot receive objects which define required parameters in :ref:`Object._init()`. See :ref:`Object._init()` for more details.
+
.. rst-class:: classref-item-separator
----
@@ -997,15 +1048,16 @@ An optional ``message`` can be shown in addition to the generic "Assertion faile
.. rst-class:: classref-method
-:ref:`String` **char**\ (\ char\: :ref:`int`\ ) :ref:`🔗`
+:ref:`String` **char**\ (\ code\: :ref:`int`\ ) :ref:`🔗`
-Returns a single character (as a :ref:`String`) of the given Unicode code point (which is compatible with ASCII code).
+Returns a single character (as a :ref:`String` of length 1) of the given Unicode code point ``code``.
::
- var upper = char(65) # upper is "A"
- var lower = char(65 + 32) # lower is "a"
- var euro = char(8364) # euro is "€"
+ print(char(65)) # Prints "A"
+ print(char(129302)) # Prints "🤖" (robot face emoji)
+
+This is the inverse of :ref:`ord()`. See also :ref:`String.chr()` and :ref:`String.unicode_at()`.
.. rst-class:: classref-item-separator
@@ -1025,7 +1077,7 @@ Converts ``what`` to ``type`` in the best way possible. The ``type`` uses the :r
var a = [4, 2.5, 1.2]
print(a is Array) # Prints true
-
+
var b = convert(a, TYPE_PACKED_BYTE_ARRAY)
print(b) # Prints [4, 2, 1]
print(b is Array) # Prints false
@@ -1054,16 +1106,16 @@ Converts a ``dictionary`` (created with :ref:`inst_to_dict()` **get_stack**\ (\ ) :ref:`🔗`
-Returns an array of dictionaries representing the current call stack. See also :ref:`print_stack()`.
+Returns an array of dictionaries representing the current call stack.
::
func _ready():
foo()
-
+
func foo():
bar()
-
+
func bar():
print(get_stack())
@@ -1073,9 +1125,9 @@ Starting from ``_ready()``, ``bar()`` would print:
[{function:bar, line:12, source:res://script.gd}, {function:foo, line:9, source:res://script.gd}, {function:_ready, line:6, source:res://script.gd}]
-\ **Note:** This function only works if the running instance is connected to a debugging server (i.e. an editor instance). :ref:`get_stack()` will not work in projects exported in release mode, or in projects exported in debug mode if not connected to a debugging server.
+See also :ref:`print_debug()`, :ref:`print_stack()`, and :ref:`Engine.capture_script_backtraces()`.
-\ **Note:** Calling this function from a :ref:`Thread` is not supported. Doing so will return an empty array.
+\ **Note:** By default, backtraces are only available in editor builds and debug builds. To enable them for release builds as well, you need to enable :ref:`ProjectSettings.debug/settings/gdscript/always_track_call_stacks`.
.. rst-class:: classref-item-separator
@@ -1089,7 +1141,7 @@ Starting from ``_ready()``, ``bar()`` would print:
**Deprecated:** Consider using :ref:`JSON.from_native()` or :ref:`Object.get_property_list()` instead.
-Returns the passed ``instance`` converted to a Dictionary. Can be useful for serializing.
+Returns the passed ``instance`` converted to a :ref:`Dictionary`. Can be useful for serializing.
::
@@ -1128,7 +1180,7 @@ Returns ``true`` if ``value`` is an instance of ``type``. The ``type`` value mus
- A :ref:`Script` (you can use any class, including inner one).
-Unlike the right operand of the ``is`` operator, ``type`` can be a non-constant value. The ``is`` operator supports more features (such as typed arrays). Use the operator instead of this method if you do not need dynamic type checking.
+Unlike the right operand of the ``is`` operator, ``type`` can be a non-constant value. The ``is`` operator supports more features (such as typed arrays). Use the operator instead of this method if you do not need to check the type dynamically.
\ **Examples:**\
@@ -1159,7 +1211,7 @@ Returns the length of the given Variant ``var``. The length can be the character
var a = [1, 2, 3, 4]
len(a) # Returns 4
-
+
var b = "Hello!"
len(b) # Returns 6
@@ -1194,6 +1246,25 @@ This function is a simplified version of :ref:`ResourceLoader.load()` **ord**\ (\ char\: :ref:`String`\ ) :ref:`🔗`
+
+Returns an integer representing the Unicode code point of the given character ``char``, which should be a string of length 1.
+
+::
+
+ print(ord("A")) # Prints 65
+ print(ord("🤖")) # Prints 129302
+
+This is the inverse of :ref:`char()`. See also :ref:`String.chr()` and :ref:`String.unicode_at()`.
+
+.. rst-class:: classref-item-separator
+
+----
+
.. _class_@GDScript_method_preload:
.. rst-class:: classref-method
@@ -1230,7 +1301,9 @@ The output in the console may look like the following:
Test print
At: res://test.gd:15:_process()
-\ **Note:** Calling this function from a :ref:`Thread` is not supported. Doing so will instead print the thread ID.
+See also :ref:`print_stack()`, :ref:`get_stack()`, and :ref:`Engine.capture_script_backtraces()`.
+
+\ **Note:** By default, backtraces are only available in editor builds and debug builds. To enable them for release builds as well, you need to enable :ref:`ProjectSettings.debug/settings/gdscript/always_track_call_stacks`.
.. rst-class:: classref-item-separator
@@ -1242,7 +1315,7 @@ The output in the console may look like the following:
|void| **print_stack**\ (\ ) :ref:`🔗`
-Prints a stack trace at the current code location. See also :ref:`get_stack()`.
+Prints a stack trace at the current code location.
The output in the console may look like the following:
@@ -1250,9 +1323,9 @@ The output in the console may look like the following:
Frame 0 - res://test.gd:16 in function '_process'
-\ **Note:** This function only works if the running instance is connected to a debugging server (i.e. an editor instance). :ref:`print_stack()` will not work in projects exported in release mode, or in projects exported in debug mode if not connected to a debugging server.
+See also :ref:`print_debug()`, :ref:`get_stack()`, and :ref:`Engine.capture_script_backtraces()`.
-\ **Note:** Calling this function from a :ref:`Thread` is not supported. Doing so will instead print the thread ID.
+\ **Note:** By default, backtraces are only available in editor builds and debug builds. To enable them for release builds as well, you need to enable :ref:`ProjectSettings.debug/settings/gdscript/always_track_call_stacks`.
.. rst-class:: classref-item-separator
@@ -1334,6 +1407,7 @@ Returns ``true`` if the given :ref:`Object`-derived class exists i
type_exists("NonExistentClass") # Returns false
.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
diff --git a/classes/class_@globalscope.rst b/classes/class_@globalscope.rst
index 97755bbea..37b822d4e 100644
--- a/classes/class_@globalscope.rst
+++ b/classes/class_@globalscope.rst
@@ -3052,7 +3052,7 @@ Since :ref:`OK` has value ``0``, and all other e
var error = method_that_returns_error()
if error != OK:
printerr("Failure!")
-
+
# Or, alternatively:
if error:
printerr("Still failing!")
@@ -3587,7 +3587,7 @@ Hints that an integer property is a bitmask using the optionally named avoidance
:ref:`PropertyHint` **PROPERTY_HINT_FILE** = ``13``
-Hints that a :ref:`String` property is a path to a file. Editing it will show a file dialog for picking the path. The hint string can be a set of filters with wildcards like ``"*.png,*.jpg"``.
+Hints that a :ref:`String` property is a path to a file. Editing it will show a file dialog for picking the path. The hint string can be a set of filters with wildcards like ``"*.png,*.jpg"``. By default the file will be stored as UID whenever available. You can use :ref:`ResourceUID` methods to convert it back to path. For storing a raw path, use :ref:`PROPERTY_HINT_FILE_PATH`.
.. _class_@GlobalScope_constant_PROPERTY_HINT_DIR:
@@ -3671,6 +3671,8 @@ If a property is :ref:`String`, hints that the property represents
If a property is :ref:`Array`, hints the editor how to show elements. The ``hint_string`` must encode nested types using ``":"`` and ``"/"``.
+If a property is :ref:`Dictionary`, hints the editor how to show elements. The ``hint_string`` is the same as :ref:`Array`, with a ``";"`` separating the key and value.
+
.. tabs::
@@ -3713,7 +3715,7 @@ If a property is :ref:`Array`, hints the editor how to show element
hint_string = "%d/%d:Zero,One,Three:3,Six:6" % [TYPE_INT, PROPERTY_HINT_ENUM] # Array of integers (an enum).
hint_string = "%d/%d:*.png" % [TYPE_STRING, PROPERTY_HINT_FILE] # Array of strings (file paths).
hint_string = "%d/%d:Texture2D" % [TYPE_OBJECT, PROPERTY_HINT_RESOURCE_TYPE] # Array of textures.
-
+
hint_string = "%d:%d:" % [TYPE_ARRAY, TYPE_FLOAT] # Two-dimensional array of floats.
hint_string = "%d:%d/%d:" % [TYPE_ARRAY, TYPE_STRING, PROPERTY_HINT_MULTILINE_TEXT] # Two-dimensional array of multiline strings.
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).
@@ -3726,7 +3728,7 @@ If a property is :ref:`Array`, hints the editor how to show element
hintString = $"{Variant.Type.Int:D}/{PropertyHint.Enum:D}:Zero,One,Three:3,Six:6"; // Array of integers (an enum).
hintString = $"{Variant.Type.String:D}/{PropertyHint.File:D}:*.png"; // Array of strings (file paths).
hintString = $"{Variant.Type.Object:D}/{PropertyHint.ResourceType:D}:Texture2D"; // Array of textures.
-
+
hintString = $"{Variant.Type.Array:D}:{Variant.Type.Float:D}:"; // Two-dimensional array of floats.
hintString = $"{Variant.Type.Array:D}:{Variant.Type.String:D}/{PropertyHint.MultilineText:D}:"; // Two-dimensional array of multiline strings.
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).
@@ -3802,7 +3804,9 @@ Hints that an :ref:`int` property is a pointer. Used by GDExtension.
:ref:`PropertyHint` **PROPERTY_HINT_ARRAY_TYPE** = ``31``
-Hints that a property is an :ref:`Array` with the stored type specified in the hint string.
+Hints that a property is an :ref:`Array` with the stored type specified in the hint string. The hint string contains the type of the array (e.g. ``"String"``).
+
+Use the hint string format from :ref:`PROPERTY_HINT_TYPE_STRING` for more control over the stored type.
.. _class_@GlobalScope_constant_PROPERTY_HINT_DICTIONARY_TYPE:
@@ -3810,7 +3814,9 @@ Hints that a property is an :ref:`Array` with the stored type speci
:ref:`PropertyHint` **PROPERTY_HINT_DICTIONARY_TYPE** = ``38``
-Hints that a property is a :ref:`Dictionary` with the stored types specified in the hint string.
+Hints that a property is a :ref:`Dictionary` with the stored types specified in the hint string. The hint string contains the key and value types separated by a semicolon (e.g. ``"int;String"``).
+
+Use the hint string format from :ref:`PROPERTY_HINT_TYPE_STRING` for more control over the stored types.
.. _class_@GlobalScope_constant_PROPERTY_HINT_LOCALE_ID:
@@ -3875,11 +3881,41 @@ Hints that a :ref:`Callable` property should be displayed as a c
Hints that a property will be changed on its own after setting, such as :ref:`AudioStreamPlayer.playing` or :ref:`GPUParticles3D.emitting`.
+.. _class_@GlobalScope_constant_PROPERTY_HINT_GROUP_ENABLE:
+
+.. rst-class:: classref-enumeration-constant
+
+:ref:`PropertyHint` **PROPERTY_HINT_GROUP_ENABLE** = ``42``
+
+Hints that a boolean property will enable the feature associated with the group that it occurs in. The property will be displayed as a checkbox on the group header. Only works within a group or subgroup.
+
+By default, disabling the property hides all properties in the group. Use the optional hint string ``"checkbox_only"`` to disable this behavior.
+
+.. _class_@GlobalScope_constant_PROPERTY_HINT_INPUT_NAME:
+
+.. rst-class:: classref-enumeration-constant
+
+:ref:`PropertyHint` **PROPERTY_HINT_INPUT_NAME** = ``43``
+
+Hints that a :ref:`String` or :ref:`StringName` property is the name of an input action. This allows the selection of any action name from the Input Map in the Project Settings. The hint string may contain two options separated by commas:
+
+- If it contains ``"show_builtin"``, built-in input actions are included in the selection.
+
+- If it contains ``"loose_mode"``, loose mode is enabled. This allows inserting any action name even if it's not present in the input map.
+
+.. _class_@GlobalScope_constant_PROPERTY_HINT_FILE_PATH:
+
+.. rst-class:: classref-enumeration-constant
+
+:ref:`PropertyHint` **PROPERTY_HINT_FILE_PATH** = ``44``
+
+Like :ref:`PROPERTY_HINT_FILE`, but the property is stored as a raw path, not UID. That means the reference will be broken if you move the file. Consider using :ref:`PROPERTY_HINT_FILE` when possible.
+
.. _class_@GlobalScope_constant_PROPERTY_HINT_MAX:
.. rst-class:: classref-enumeration-constant
-:ref:`PropertyHint` **PROPERTY_HINT_MAX** = ``42``
+:ref:`PropertyHint` **PROPERTY_HINT_MAX** = ``45``
Represents the size of the :ref:`PropertyHint` enum.
@@ -4225,7 +4261,7 @@ Used internally. Allows to not dump core virtual methods (such as :ref:`Object._
:ref:`MethodFlags` **METHOD_FLAG_VIRTUAL_REQUIRED** = ``128``
-Flag for a virtual method that is required.
+Flag for a virtual method that is required. In GDScript, this flag is set for abstract functions.
.. _class_@GlobalScope_constant_METHOD_FLAGS_DEFAULT:
@@ -5261,19 +5297,19 @@ Returns the absolute value of a :ref:`Variant` parameter ``x`` (i
var a = abs(-1)
# a is 1
-
+
var b = abs(-1.2)
# b is 1.2
-
+
var c = abs(Vector2(-3.5, -4))
# c is (3.5, 4)
-
+
var d = abs(Vector2i(-5, -6))
# d is (5, 6)
-
+
var e = abs(Vector3(-7, 8.5, -3.8))
# e is (7, 8.5, 3.8)
-
+
var f = abs(Vector3i(-7, -8, -9))
# f is (7, 8, 9)
@@ -5346,7 +5382,7 @@ Returns the hyperbolic arc (also called inverse) cosine of ``x``, returning a va
var a = acosh(2) # Returns 1.31695789692482
cosh(a) # Returns 2
-
+
var b = acosh(-1) # Returns 0
.. rst-class:: classref-item-separator
@@ -5451,7 +5487,7 @@ In mathematics, the inverse hyperbolic tangent is only defined for -1 < ``x`` <
var a = atanh(0.9) # Returns 1.47221948958322
tanh(a) # Returns 0.9
-
+
var b = atanh(-2) # Returns -inf
tanh(b) # Returns -1
@@ -5572,7 +5608,7 @@ Clamps the ``value``, returning a :ref:`Variant` not less than ``
var a = clamp(-10, -1, 5)
# a is -1
-
+
var b = clamp(8.1, 0.9, 5.5)
# b is 5.5
@@ -5596,7 +5632,7 @@ Clamps the ``value``, returning a :ref:`float` not less than ``min`
var speed = 42.1
var a = clampf(speed, 1.0, 20.5) # a is 20.5
-
+
speed = -10.0
var b = clampf(speed, -1.0, 1.0) # b is -1.0
@@ -5616,7 +5652,7 @@ Clamps the ``value``, returning an :ref:`int` not less than ``min`` a
var speed = 42
var a = clampi(speed, 1, 20) # a is 20
-
+
speed = -10
var b = clampi(speed, -1, 1) # b is -1
@@ -5943,7 +5979,7 @@ Returns the :ref:`Object` that corresponds to ``instance_id``. All
.. code-tab:: gdscript
var drink = "water"
-
+
func _ready():
var id = get_instance_id()
var instance = instance_from_id(id)
@@ -5954,7 +5990,7 @@ Returns the :ref:`Object` that corresponds to ``instance_id``. All
public partial class MyNode : Node
{
public string Drink { get; set; } = "water";
-
+
public override void _Ready()
{
ulong id = GetInstanceId();
@@ -5982,7 +6018,7 @@ Returns an interpolation or extrapolation factor considering the range specified
# The interpolation ratio in the `lerp()` call below is 0.75.
var middle = lerp(20, 30, 0.75)
# middle is now 27.5.
-
+
# Now, we pretend to have forgotten the original ratio and want to get it back.
var ratio = inverse_lerp(20, 30, 27.5)
# ratio is now 0.75.
@@ -6015,7 +6051,7 @@ Infinity values of the same sign are considered equal.
:ref:`bool` **is_finite**\ (\ x\: :ref:`float`\ ) :ref:`🔗`
-Returns whether ``x`` is a finite value, i.e. it is not :ref:`@GDScript.NAN`, positive infinity, or negative infinity.
+Returns whether ``x`` is a finite value, i.e. it is not :ref:`@GDScript.NAN`, positive infinity, or negative infinity. See also :ref:`is_inf()` and :ref:`is_nan()`.
.. rst-class:: classref-item-separator
@@ -6027,7 +6063,7 @@ Returns whether ``x`` is a finite value, i.e. it is not :ref:`@GDScript.NAN` **is_inf**\ (\ x\: :ref:`float`\ ) :ref:`🔗`
-Returns ``true`` if ``x`` is either positive infinity or negative infinity.
+Returns ``true`` if ``x`` is either positive infinity or negative infinity. See also :ref:`is_finite()` and :ref:`is_nan()`.
.. rst-class:: classref-item-separator
@@ -6063,7 +6099,7 @@ Returns ``true`` if ``instance`` is a valid Object (e.g. has not been deleted fr
:ref:`bool` **is_nan**\ (\ x\: :ref:`float`\ ) :ref:`🔗`
-Returns ``true`` if ``x`` is a NaN ("Not a Number" or invalid) value.
+Returns ``true`` if ``x`` is a NaN ("Not a Number" or invalid) value. This method is needed as :ref:`@GDScript.NAN` is not equal to itself, which means ``x == NAN`` can't be used to check whether a value is a NaN.
.. rst-class:: classref-item-separator
@@ -6086,7 +6122,7 @@ Returns ``true``, for value types, if ``a`` and ``b`` share the same value. Retu
is_same(vec2_a, vec2_a) # true
is_same(vec2_a, vec2_b) # true
is_same(vec2_a, vec2_c) # false
-
+
# Array is a reference type
var arr_a = []
var arr_b = []
@@ -6357,7 +6393,7 @@ Returns the smallest integer power of 2 that is greater than or equal to ``value
nearest_po2(3) # Returns 4
nearest_po2(4) # Returns 4
nearest_po2(5) # Returns 8
-
+
nearest_po2(0) # Returns 0 (this may not be expected)
nearest_po2(-1) # Returns 0 (this may not be expected)
@@ -6500,8 +6536,6 @@ When printing to standard output, the supported subset of BBCode is converted to
\ **Note:** Consider using :ref:`push_error()` and :ref:`push_warning()` to print error and warning messages instead of :ref:`print()` or :ref:`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.
-\ **Note:** On Windows, only Windows 10 and later correctly displays ANSI escape codes in standard output.
-
\ **Note:** Output displayed in the editor supports clickable ``[url=address]text[/url]`` tags. The ``[url]`` tag's ``address`` value is handled by :ref:`OS.shell_open()` when clicked.
.. rst-class:: classref-item-separator
@@ -6711,7 +6745,7 @@ Given a ``seed``, returns a :ref:`PackedInt64Array` of s
::
var a = rand_from_seed(4)
-
+
print(a[0]) # Prints 2879024997
print(a[1]) # Prints 4
@@ -7018,7 +7052,7 @@ Supported types: :ref:`int`, :ref:`float`, :ref:`Vector2
sign(0.0) # Returns 0
sign(6.0) # Returns 1
sign(NAN) # Returns 0
-
+
sign(Vector3(-6.0, 0.0, 6.0)) # Returns (-1, 0, 1)
\ **Note:** For better type safety, use :ref:`signf()`, :ref:`signi()`, :ref:`Vector2.sign()`, :ref:`Vector2i.sign()`, :ref:`Vector3.sign()`, :ref:`Vector3i.sign()`, :ref:`Vector4.sign()`, or :ref:`Vector4i.sign()`.
@@ -7143,7 +7177,7 @@ The returned value is the same type of :ref:`Variant` as ``step``
snapped(100, 32) # Returns 96
snapped(3.14159, 0.01) # Returns 3.14
-
+
snapped(Vector2(34, 70), Vector2(8, 8)) # Returns (32, 72)
See also :ref:`ceil()`, :ref:`floor()`, and :ref:`round()`.
@@ -7206,7 +7240,7 @@ Returns the square root of ``x``, where ``x`` is a non-negative number.
sqrt(10.24) # Returns 3.2
sqrt(-1) # Returns NaN
-\ **Note:** Negative values of ``x`` return NaN ("Not a Number"). in C#, if you need negative inputs, use ``System.Numerics.Complex``.
+\ **Note:** Negative values of ``x`` return NaN ("Not a Number"). In C#, if you need negative inputs, use ``System.Numerics.Complex``.
.. rst-class:: classref-item-separator
@@ -7467,18 +7501,18 @@ A weak reference to an object is not enough to keep the object alive: when the o
:ref:`Variant` **wrap**\ (\ value\: :ref:`Variant`, min\: :ref:`Variant`, max\: :ref:`Variant`\ ) :ref:`🔗`
-Wraps the :ref:`Variant` ``value`` between ``min`` and ``max``. Can be used for creating loop-alike behavior or infinite surfaces.
+Wraps the :ref:`Variant` ``value`` between ``min`` and ``max``. ``min`` is *inclusive* while ``max`` is *exclusive*. This can be used for creating loop-like behavior or infinite surfaces.
-Variant types :ref:`int` and :ref:`float` are supported. If any of the arguments is :ref:`float` this function returns a :ref:`float`, otherwise it returns an :ref:`int`.
+Variant types :ref:`int` and :ref:`float` are supported. If any of the arguments is :ref:`float`, this function returns a :ref:`float`, otherwise it returns an :ref:`int`.
::
var a = wrap(4, 5, 10)
# a is 9 (int)
-
+
var a = wrap(7, 5, 10)
# a is 7 (int)
-
+
var a = wrap(10.5, 5, 10)
# a is 5.5 (float)
@@ -7492,7 +7526,7 @@ Variant types :ref:`int` and :ref:`float` are supported.
:ref:`float` **wrapf**\ (\ value\: :ref:`float`, min\: :ref:`float`, max\: :ref:`float`\ ) :ref:`🔗`
-Wraps the float ``value`` between ``min`` and ``max``. Can be used for creating loop-alike behavior or infinite surfaces.
+Wraps the float ``value`` between ``min`` and ``max``. ``min`` is *inclusive* while ``max`` is *exclusive*. This can be used for creating loop-like behavior or infinite surfaces.
::
@@ -7509,9 +7543,7 @@ Wraps the float ``value`` between ``min`` and ``max``. Can be used for creating
# Infinite rotation (in radians)
angle = wrapf(angle + 0.1, -PI, PI)
-\ **Note:** If ``min`` is ``0``, this is equivalent to :ref:`fposmod()`, so prefer using that instead.
-
-\ :ref:`wrapf()` is more flexible than using the :ref:`fposmod()` approach by giving the user control over the minimum value.
+\ **Note:** If ``min`` is ``0``, this is equivalent to :ref:`fposmod()`, so prefer using that instead. :ref:`wrapf()` is more flexible than using the :ref:`fposmod()` approach by giving the user control over the minimum value.
.. rst-class:: classref-item-separator
@@ -7523,7 +7555,7 @@ Wraps the float ``value`` between ``min`` and ``max``. Can be used for creating
:ref:`int` **wrapi**\ (\ value\: :ref:`int`, min\: :ref:`int`, max\: :ref:`int`\ ) :ref:`🔗`
-Wraps the integer ``value`` between ``min`` and ``max``. Can be used for creating loop-alike behavior or infinite surfaces.
+Wraps the integer ``value`` between ``min`` and ``max``. ``min`` is *inclusive* while ``max`` is *exclusive*. This can be used for creating loop-like behavior or infinite surfaces.
::
@@ -7536,6 +7568,7 @@ Wraps the integer ``value`` between ``min`` and ``max``. Can be used for creatin
var result = wrapi(-6, -5, -1)
.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
diff --git a/classes/class_aabb.rst b/classes/class_aabb.rst
index cff1cd256..e07be295a 100644
--- a/classes/class_aabb.rst
+++ b/classes/class_aabb.rst
@@ -23,7 +23,7 @@ It uses floating-point coordinates. The 2D counterpart to **AABB** is :ref:`Rect
\ **Note:** Negative values for :ref:`size` are not supported. With negative size, most **AABB** methods do not work correctly. Use :ref:`abs()` to get an equivalent **AABB** with a non-negative size.
-\ **Note:** In a boolean context, a **AABB** evaluates to ``false`` if both :ref:`position` and :ref:`size` are zero (equal to :ref:`Vector3.ZERO`). Otherwise, it always evaluates to ``true``.
+\ **Note:** In a boolean context, an **AABB** evaluates to ``false`` if both :ref:`position` and :ref:`size` are zero (equal to :ref:`Vector3.ZERO`). Otherwise, it always evaluates to ``true``.
.. note::
@@ -286,7 +286,7 @@ Returns ``true`` if this bounding box *completely* encloses the ``with`` box. Th
var a = AABB(Vector3(0, 0, 0), Vector3(4, 4, 4))
var b = AABB(Vector3(1, 1, 1), Vector3(3, 3, 3))
var c = AABB(Vector3(2, 2, 2), Vector3(8, 8, 8))
-
+
print(a.encloses(a)) # Prints true
print(a.encloses(b)) # Prints true
print(a.encloses(c)) # Prints false
@@ -296,7 +296,7 @@ Returns ``true`` if this bounding box *completely* encloses the ``with`` box. Th
var a = new Aabb(new Vector3(0, 0, 0), new Vector3(4, 4, 4));
var b = new Aabb(new Vector3(1, 1, 1), new Vector3(3, 3, 3));
var c = new Aabb(new Vector3(2, 2, 2), new Vector3(8, 8, 8));
-
+
GD.Print(a.Encloses(a)); // Prints True
GD.Print(a.Encloses(b)); // Prints True
GD.Print(a.Encloses(c)); // Prints False
@@ -321,11 +321,11 @@ Returns a copy of this bounding box expanded to align the edges with the given `
.. code-tab:: gdscript
var box = AABB(Vector3(0, 0, 0), Vector3(5, 2, 5))
-
+
box = box.expand(Vector3(10, 0, 0))
print(box.position) # Prints (0.0, 0.0, 0.0)
print(box.size) # Prints (10.0, 2.0, 5.0)
-
+
box = box.expand(Vector3(-5, 0, 5))
print(box.position) # Prints (-5.0, 0.0, 0.0)
print(box.size) # Prints (15.0, 2.0, 5.0)
@@ -333,11 +333,11 @@ Returns a copy of this bounding box expanded to align the edges with the given `
.. code-tab:: csharp
var box = new Aabb(new Vector3(0, 0, 0), new Vector3(5, 2, 5));
-
+
box = box.Expand(new Vector3(10, 0, 0));
GD.Print(box.Position); // Prints (0, 0, 0)
GD.Print(box.Size); // Prints (10, 2, 5)
-
+
box = box.Expand(new Vector3(-5, 0, 5));
GD.Print(box.Position); // Prints (-5, 0, 0)
GD.Print(box.Size); // Prints (15, 2, 5)
@@ -366,7 +366,7 @@ Returns the center point of the bounding box. This is the same as ``position + (
:ref:`Vector3` **get_endpoint**\ (\ idx\: :ref:`int`\ ) |const| :ref:`🔗`
-Returns the position of one of the 8 vertices that compose this bounding box. With a ``idx`` of ``0`` this is the same as :ref:`position`, and a ``idx`` of ``7`` is the same as :ref:`end`.
+Returns the position of one of the 8 vertices that compose this bounding box. With an ``idx`` of ``0`` this is the same as :ref:`position`, and an ``idx`` of ``7`` is the same as :ref:`end`.
.. rst-class:: classref-item-separator
@@ -386,7 +386,7 @@ Returns the longest normalized axis of this bounding box's :ref:`size` and :ref:
\ **Note:** Due to floating-point precision errors, consider using :ref:`is_equal_approx()` instead, which is more reliable.
.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
diff --git a/classes/class_acceptdialog.rst b/classes/class_acceptdialog.rst
index 7b24b3ced..0d02fdb51 100644
--- a/classes/class_acceptdialog.rst
+++ b/classes/class_acceptdialog.rst
@@ -44,7 +44,11 @@ Properties
+-----------------------------+-----------------------------------------------------------------------------------+------------------------------------------------------------------------------+
| :ref:`bool` | keep_title_visible | ``true`` (overrides :ref:`Window`) |
+-----------------------------+-----------------------------------------------------------------------------------+------------------------------------------------------------------------------+
- | :ref:`String` | :ref:`ok_button_text` | ``"OK"`` |
+ | :ref:`bool` | maximize_disabled | ``true`` (overrides :ref:`Window`) |
+ +-----------------------------+-----------------------------------------------------------------------------------+------------------------------------------------------------------------------+
+ | :ref:`bool` | minimize_disabled | ``true`` (overrides :ref:`Window`) |
+ +-----------------------------+-----------------------------------------------------------------------------------+------------------------------------------------------------------------------+
+ | :ref:`String` | :ref:`ok_button_text` | ``""`` |
+-----------------------------+-----------------------------------------------------------------------------------+------------------------------------------------------------------------------+
| :ref:`String` | title | ``"Alert!"`` (overrides :ref:`Window`) |
+-----------------------------+-----------------------------------------------------------------------------------+------------------------------------------------------------------------------+
@@ -134,7 +138,7 @@ Emitted when the dialog is accepted, i.e. the OK button is pressed.
**custom_action**\ (\ action\: :ref:`StringName`\ ) :ref:`🔗`
-Emitted when a custom button is pressed. See :ref:`add_button()`.
+Emitted when a custom button with an action is pressed. See :ref:`add_button()`.
.. rst-class:: classref-section-separator
@@ -173,7 +177,7 @@ Sets autowrapping for the text in the dialog.
- |void| **set_close_on_escape**\ (\ value\: :ref:`bool`\ )
- :ref:`bool` **get_close_on_escape**\ (\ )
-If ``true``, the dialog will be hidden when the escape key (:ref:`@GlobalScope.KEY_ESCAPE`) is pressed.
+If ``true``, the dialog will be hidden when the ``ui_cancel`` action is pressed (by default, this action is bound to :ref:`@GlobalScope.KEY_ESCAPE`).
.. rst-class:: classref-item-separator
@@ -219,14 +223,14 @@ The text displayed by the dialog.
.. rst-class:: classref-property
-:ref:`String` **ok_button_text** = ``"OK"`` :ref:`🔗