Merge pull request #11338 from godotengine/4.5

Update stable
This commit is contained in:
Max Hilbrunner
2025-10-02 16:05:39 +02:00
committed by GitHub
17 changed files with 427 additions and 144 deletions
+94 -18
View File
@@ -8,9 +8,6 @@ source,destination
/community/tutorials/vr/index.html,/tutorials/vr/index.html
/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/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
@@ -27,8 +24,8 @@ source,destination
/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,/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/binding_to_external_libraries.html,/engine_details/architecture/binding_to_external_libraries.html
/development/cpp/common_engine_methods_and_macros.html,/engine_details/architecture/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
@@ -38,19 +35,19 @@ source,destination
/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/core_types.html,/engine_details/architecture/core_types.html
/development/cpp/custom_audiostreams.html,/engine_details/architecture/custom_audiostreams.html
/development/cpp/custom_godot_servers.html,/engine_details/architecture/custom_godot_servers.html
/development/cpp/custom_modules_in_cpp.html,/engine_details/architecture/custom_modules_in_cpp.html
/development/cpp/custom_resource_format_loaders.html,/engine_details/architecture/custom_resource_format_loaders.html
/development/cpp/index.html,/engine_details/architecture/index.html
/development/cpp/inheritance_class_tree.html,/engine_details/architecture/inheritance_class_tree.html
/development/cpp/introduction_to_godot_development.html,https://contributing.godotengine.org/en/latest/engine/introduction.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/object_class.html,/engine_details/architecture/object_class.html
/development/cpp/unit_testing.html,/engine_details/architecture/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/variant_class.html,/engine_details/architecture/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
@@ -297,7 +294,7 @@ source,destination
/reference/gdscript_more_efficiently.html,/learning/scripting/gdscript/gdscript_advanced.html
/reference/gdscript_printf.html,/learning/scripting/gdscript/gdscript_format_string.html
/reference/inheritance_class_tree.html,/development/cpp/inheritance_class_tree.html
/reference/introduction_to_godot_development.html,/development/cpp/introduction_to_godot_development.html
/reference/introduction_to_godot_development.html,https://contributing.godotengine.org/en/latest/engine/introduction.html
/reference/introduction_to_the_buildsystem.html,/development/compiling/introduction_to_the_buildsystem.html
/reference/locales.html,/learning/features/misc/locales.html
/reference/object_class.html,/development/cpp/object_class.html
@@ -403,6 +400,85 @@ source,destination
/tutorials/viewports/multiple_resolutions.html,/tutorials/rendering/multiple_resolutions.html
/tutorials/viewports/using_viewport_as_texture.html,/tutorials/shaders/using_viewport_as_texture.html
/tutorials/viewports/viewports.html,/tutorials/rendering/viewports.html
/contributing/development/compiling/compiling_for_uwp.html,/about/faq.html#which-platforms-are-supported-by-godot
/tutorials/export/exporting_for_uwp.html,/about/faq.html#which-platforms-are-supported-by-godot
/tutorials/xr/openxr_passthrough.html,/tutorials/xr/ar_passthrough.html
/contributing/development/compiling/compiling_for_uwp.html,/about/faq.html#which-platforms-are-supported-by-godot
/contributing/_contributing.html,https://contributing.godotengine.org
/contributing/development/compiling/compiling_with_mono.html,/engine_details/development/compiling/compiling_with_dotnet.html
/contributing/architecture/introduction_to_godot_development.html,/engine_details/architecture/index.html
/contributing/development/best_practices_for_engine_contributors.html,https://contributing.godotengine.org/en/latest/engine/guidelines/best_practices.html
/contributing/development/code_style_guidelines.html,https://contributing.godotengine.org/en/latest/engine/guidelines/code_style.html
/contributing/development/cpp_usage_guidelines.html,https://contributing.godotengine.org/en/latest/engine/guidelines/cpp_usage_guidelines.html
/contributing/development/editor/editor_style_guide.html,https://contributing.godotengine.org/en/latest/engine/guidelines/editor_style_guide.html
/contributing/development/editor/index.html,/engine_details/editor/index.html
/contributing/development/index.html,/engine_details/development/index.html
/contributing/documentation/building_the_manual.html,https://contributing.godotengine.org/en/latest/documentation/manual/building_the_manual.html
/contributing/documentation/content_guidelines.html,https://contributing.godotengine.org/en/latest/documentation/guidelines/content_guidelines.html
/contributing/documentation/contributing_to_the_documentation.html,https://contributing.godotengine.org/en/latest/documentation/manual/index.html
/contributing/documentation/docs_contribution_checklist.html,https://contributing.godotengine.org/en/latest/documentation/guidelines/docs_contribution_checklist.html
/contributing/documentation/docs_image_guidelines.html,https://contributing.godotengine.org/en/latest/documentation/guidelines/docs_image_guidelines.html
/contributing/documentation/docs_writing_guidelines.html,https://contributing.godotengine.org/en/latest/documentation/guidelines/docs_writing_guidelines.html
/contributing/documentation/editor_and_docs_localization.html,https://contributing.godotengine.org/en/latest/documentation/translation/index.html
/contributing/documentation/index.html,https://contributing.godotengine.org/en/latest/documentation/overview.html
/contributing/documentation/updating_the_class_reference.html,https://contributing.godotengine.org/en/latest/documentation/class_reference.html
/contributing/how_to_contribute.html,https://contributing.godotengine.org/en/latest/organization/how_to_contribute.html
/contributing/workflow/bisecting_regressions.html,https://contributing.godotengine.org/en/latest/reporting_issues/bisecting.html
/contributing/workflow/bug_triage_guidelines.html,https://contributing.godotengine.org/en/latest/triage/guidelines.html
/contributing/workflow/first_steps.html,https://contributing.godotengine.org/en/latest/engine/introduction.html
/contributing/workflow/index.html,https://contributing.godotengine.org/en/latest/engine/introduction.html
/contributing/workflow/pr_review_guidelines.html,https://contributing.godotengine.org/en/latest/organization/pull_requests/review_guidelines.html
/contributing/workflow/pr_workflow.html,https://contributing.godotengine.org/en/latest/organization/pull_requests/creating_pull_requests.html
/contributing/workflow/testing_pull_requests.html,https://contributing.godotengine.org/en/latest/organization/pull_requests/testing.html
/contributing/development/core_and_modules/2d_coordinate_systems.html,/engine_details/architecture/2d_coordinate_systems.html
/contributing/development/core_and_modules/common_engine_methods_and_macros.html,/engine_details/architecture/common_engine_methods_and_macros.html
/contributing/development/core_and_modules/core_types.html,//architecture/core_types.html
/contributing/development/core_and_modules/custom_audiostreams.html,//architecture/custom_audiostreams.html
/contributing/development/core_and_modules/custom_godot_servers.html,//architecture/custom_godot_servers.html
/contributing/development/core_and_modules/custom_modules_in_cpp.html,//architecture/custom_modules_in_cpp.html
/contributing/development/core_and_modules/custom_platform_ports.html,//architecture/custom_platform_ports.html
/contributing/development/core_and_modules/custom_resource_format_loaders.html,//architecture/custom_resource_format_loaders.html
/contributing/development/core_and_modules/godot_architecture_diagram.html,//architecture/godot_architecture_diagram.html
/contributing/development/core_and_modules/index.html,//architecture/index.html
/contributing/development/core_and_modules/inheritance_class_tree.html,//architecture/inheritance_class_tree.html
/contributing/development/core_and_modules/internal_rendering_architecture.html,//architecture/internal_rendering_architecture.html
/contributing/development/core_and_modules/object_class.html,//architecture/object_class.html
/contributing/development/core_and_modules/scripting_development.html,//architecture/scripting_development.html
/contributing/development/core_and_modules/unit_testing.html,//architecture/unit_testing.html
/contributing/development/core_and_modules/variant_class.html,//architecture/variant_class.html
/contributing/documentation/class_reference_primer.html,engine_details/class_reference/index.html
/contributing/development/compiling/compiling_for_android.html,/engine_details/development/compiling/compiling_for_android.html,
/contributing/development/compiling/compiling_for_ios.html,/engine_details/development/compiling/compiling_for_ios.html
/contributing/development/compiling/compiling_for_linuxbsd.html,/engine_details/development/compiling/compiling_for_linuxbsd.html
/contributing/development/compiling/compiling_for_macos.html,/engine_details/development/compiling/compiling_for_macos.html
/contributing/development/compiling/compiling_for_visionos.html,/engine_details/development/compiling/compiling_for_visionos.html
/contributing/development/compiling/compiling_for_web.html,/engine_details/development/compiling/compiling_for_web.html
/contributing/development/compiling/compiling_for_windows.html,/engine_details/development/compiling/compiling_for_windows.html
/contributing/development/compiling/compiling_with_dotnet.html,/engine_details/development/compiling/compiling_with_dotnet.html
/contributing/development/compiling/compiling_with_script_encryption_key.html,/engine_details/development/compiling/compiling_with_script_encryption_key.html
/contributing/development/compiling/cross-compiling_for_ios_on_linux.html,/engine_details/development/compiling/cross-compiling_for_ios_on_linux.html
/contributing/development/compiling/getting_source.html,/engine_details/development/compiling/getting_source.html
/contributing/development/compiling/index.html,/engine_details/development/compiling/index.html
/contributing/development/compiling/introduction_to_the_buildsystem.html,/engine_details/development/compiling/introduction_to_the_buildsystem.html
/contributing/development/compiling/optimizing_for_size.html,/engine_details/development/compiling/optimizing_for_size.html
/contributing/development/configuring_an_ide/android_studio.html,/engine_details/development/configuring_an_ide/android_studio.html
/contributing/development/configuring_an_ide/clion.html,/engine_details/development/configuring_an_ide/clion.html
/contributing/development/configuring_an_ide/code_blocks.html,/engine_details/development/configuring_an_ide/code_blocks.html
/contributing/development/configuring_an_ide/index.html,/engine_details/development/configuring_an_ide/index.html
/contributing/development/configuring_an_ide/kdevelop.html,/engine_details/development/configuring_an_ide/kdevelop.html
/contributing/development/configuring_an_ide/qt_creator.html,/engine_details/development/configuring_an_ide/qt_creator.html
/contributing/development/configuring_an_ide/rider.html,/engine_details/development/configuring_an_ide/rider.html
/contributing/development/configuring_an_ide/rider.html,/engine_details/development/configuring_an_ide/rider.html
/contributing/development/configuring_an_ide/visual_studio.html,/engine_details/development/configuring_an_ide/visual_studio.html
/contributing/development/configuring_an_ide/visual_studio_code.html,/engine_details/development/configuring_an_ide/visual_studio_code.html
/contributing/development/configuring_an_ide/xcode.html,/engine_details/development/configuring_an_ide/xcode.html
/contributing/development/debugging/index.html,/engine_details/development/debugging/index.html
/contributing/development/debugging/macos_debug.html,/engine_details/development/debugging/macos_debug.html
/contributing/development/debugging/using_cpp_profilers.html,/engine_details/development/debugging/using_cpp_profilers.html
/contributing/development/debugging/using_sanitizers.html,/engine_details/development/debugging/using_sanitizers.html
/contributing/development/debugging/vulkan/index.html,/engine_details/development/debugging/vulkan/index.html
/contributing/development/debugging/vulkan/vulkan_validation_layers.html,/engine_details/development/debugging/vulkan/vulkan_validation_layers.html
/contributing/development/handling_compatibility_breakages.html,/engine_details/development/handling_compatibility_breakages.html
/contributing/development/editor/creating_icons.html,/engine_details/editor/creating_icons.html
/contributing/development/editor/index.html,/engine_details/editor/index.html
/contributing/development/editor/introduction_to_editor_development.html,/engine_details/editor/introduction_to_editor_development.html
/contributing/development/file_formats/gdscript_grammar.html,/engine_details/file_formats/gdscript_grammar.html
1 source destination
8 /community/tutorials/vr/index.html /tutorials/vr/index.html
9 /community/tutorials/vr/vr_primer.html /tutorials/vr/vr_primer.html
10 /content/3d/making_trees.html /tutorials/content/making_trees.html
/contributing/_contributing.html /community/contributing/
/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
11 /development/compiling/compiling_for_android.html /engine_details/development/compiling/compiling_for_android.html
12 /development/compiling/compiling_for_ios.html /engine_details/development/compiling/compiling_for_ios.html
13 /development/compiling/compiling_for_linuxbsd.html /engine_details/development/compiling/compiling_for_linuxbsd.html
24 /development/compiling/introduction_to_the_buildsystem.html /engine_details/development/compiling/introduction_to_the_buildsystem.html
25 /development/compiling/optimizing_for_size.html /engine_details/development/compiling/optimizing_for_size.html
26 /development/consoles/consoles.html /tutorials/platform/consoles.html
27 /development/cpp/binding_to_external_libraries.html /engine_details/development/core_and_modules/binding_to_external_libraries.html /engine_details/architecture/binding_to_external_libraries.html
28 /development/cpp/common_engine_methods_and_macros.html /engine_details/development/core_and_modules/common_engine_methods_and_macros.html /engine_details/architecture/common_engine_methods_and_macros.html
29 /development/cpp/configuring_an_ide/android_studio.html /engine_details/development/configuring_an_ide/android_studio.html
30 /development/cpp/configuring_an_ide/clion.html /engine_details/development/configuring_an_ide/clion.html
31 /development/cpp/configuring_an_ide/code_blocks.html /engine_details/development/configuring_an_ide/code_blocks.html
35 /development/cpp/configuring_an_ide/visual_studio.html /engine_details/development/configuring_an_ide/visual_studio.html
36 /development/cpp/configuring_an_ide/visual_studio_code.html /engine_details/development/configuring_an_ide/visual_studio_code.html
37 /development/cpp/configuring_an_ide/xcode.html /engine_details/development/configuring_an_ide/xcode.html
38 /development/cpp/core_types.html /engine_details/development/core_and_modules/core_types.html /engine_details/architecture/core_types.html
39 /development/cpp/custom_audiostreams.html /engine_details/development/core_and_modules/custom_audiostreams.html /engine_details/architecture/custom_audiostreams.html
40 /development/cpp/custom_godot_servers.html /engine_details/development/core_and_modules/custom_godot_servers.html /engine_details/architecture/custom_godot_servers.html
41 /development/cpp/custom_modules_in_cpp.html /engine_details/development/core_and_modules/custom_modules_in_cpp.html /engine_details/architecture/custom_modules_in_cpp.html
42 /development/cpp/custom_resource_format_loaders.html /engine_details/development/core_and_modules/custom_resource_format_loaders.html /engine_details/architecture/custom_resource_format_loaders.html
43 /development/cpp/index.html /engine_details/development/core_and_modules/index.html /engine_details/architecture/index.html
44 /development/cpp/inheritance_class_tree.html /engine_details/development/core_and_modules/inheritance_class_tree.html /engine_details/architecture/inheritance_class_tree.html
45 /development/cpp/introduction_to_godot_development.html /engine_details/development/core_and_modules/introduction_to_godot_development.html https://contributing.godotengine.org/en/latest/engine/introduction.html
46 /development/cpp/macos_debug.html /engine_details/development/debugging/macos_debug.html
47 /development/cpp/object_class.html /engine_details/development/core_and_modules/object_class.html /engine_details/architecture/object_class.html
48 /development/cpp/unit_testing.html /engine_details/development/core_and_modules/unit_testing.html /engine_details/architecture/unit_testing.html
49 /development/cpp/using_cpp_profilers.html /engine_details/development/debugging/using_cpp_profilers.html
50 /development/cpp/variant_class.html /engine_details/development/core_and_modules/variant_class.html /engine_details/architecture/variant_class.html
51 /development/cpp/vulkan/index.html /engine_details/development/debugging/vulkan/index.html
52 /development/cpp/vulkan/vulkan_validation_layers.html /engine_details/development/debugging/vulkan/vulkan_validation_layers.html
53 /development/editor/creating_icons.html /engine_details/editor/creating_icons.html
294 /reference/gdscript_more_efficiently.html /learning/scripting/gdscript/gdscript_advanced.html
295 /reference/gdscript_printf.html /learning/scripting/gdscript/gdscript_format_string.html
296 /reference/inheritance_class_tree.html /development/cpp/inheritance_class_tree.html
297 /reference/introduction_to_godot_development.html /development/cpp/introduction_to_godot_development.html https://contributing.godotengine.org/en/latest/engine/introduction.html
298 /reference/introduction_to_the_buildsystem.html /development/compiling/introduction_to_the_buildsystem.html
299 /reference/locales.html /learning/features/misc/locales.html
300 /reference/object_class.html /development/cpp/object_class.html
400 /tutorials/viewports/multiple_resolutions.html /tutorials/rendering/multiple_resolutions.html
401 /tutorials/viewports/using_viewport_as_texture.html /tutorials/shaders/using_viewport_as_texture.html
402 /tutorials/viewports/viewports.html /tutorials/rendering/viewports.html
/contributing/development/compiling/compiling_for_uwp.html /about/faq.html#which-platforms-are-supported-by-godot
403 /tutorials/export/exporting_for_uwp.html /about/faq.html#which-platforms-are-supported-by-godot
404 /tutorials/xr/openxr_passthrough.html /tutorials/xr/ar_passthrough.html
405 /contributing/development/compiling/compiling_for_uwp.html /about/faq.html#which-platforms-are-supported-by-godot
406 /contributing/_contributing.html https://contributing.godotengine.org
407 /contributing/development/compiling/compiling_with_mono.html /engine_details/development/compiling/compiling_with_dotnet.html
408 /contributing/architecture/introduction_to_godot_development.html /engine_details/architecture/index.html
409 /contributing/development/best_practices_for_engine_contributors.html https://contributing.godotengine.org/en/latest/engine/guidelines/best_practices.html
410 /contributing/development/code_style_guidelines.html https://contributing.godotengine.org/en/latest/engine/guidelines/code_style.html
411 /contributing/development/cpp_usage_guidelines.html https://contributing.godotengine.org/en/latest/engine/guidelines/cpp_usage_guidelines.html
412 /contributing/development/editor/editor_style_guide.html https://contributing.godotengine.org/en/latest/engine/guidelines/editor_style_guide.html
413 /contributing/development/editor/index.html /engine_details/editor/index.html
414 /contributing/development/index.html /engine_details/development/index.html
415 /contributing/documentation/building_the_manual.html https://contributing.godotengine.org/en/latest/documentation/manual/building_the_manual.html
416 /contributing/documentation/content_guidelines.html https://contributing.godotengine.org/en/latest/documentation/guidelines/content_guidelines.html
417 /contributing/documentation/contributing_to_the_documentation.html https://contributing.godotengine.org/en/latest/documentation/manual/index.html
418 /contributing/documentation/docs_contribution_checklist.html https://contributing.godotengine.org/en/latest/documentation/guidelines/docs_contribution_checklist.html
419 /contributing/documentation/docs_image_guidelines.html https://contributing.godotengine.org/en/latest/documentation/guidelines/docs_image_guidelines.html
420 /contributing/documentation/docs_writing_guidelines.html https://contributing.godotengine.org/en/latest/documentation/guidelines/docs_writing_guidelines.html
421 /contributing/documentation/editor_and_docs_localization.html https://contributing.godotengine.org/en/latest/documentation/translation/index.html
422 /contributing/documentation/index.html https://contributing.godotengine.org/en/latest/documentation/overview.html
423 /contributing/documentation/updating_the_class_reference.html https://contributing.godotengine.org/en/latest/documentation/class_reference.html
424 /contributing/how_to_contribute.html https://contributing.godotengine.org/en/latest/organization/how_to_contribute.html
425 /contributing/workflow/bisecting_regressions.html https://contributing.godotengine.org/en/latest/reporting_issues/bisecting.html
426 /contributing/workflow/bug_triage_guidelines.html https://contributing.godotengine.org/en/latest/triage/guidelines.html
427 /contributing/workflow/first_steps.html https://contributing.godotengine.org/en/latest/engine/introduction.html
428 /contributing/workflow/index.html https://contributing.godotengine.org/en/latest/engine/introduction.html
429 /contributing/workflow/pr_review_guidelines.html https://contributing.godotengine.org/en/latest/organization/pull_requests/review_guidelines.html
430 /contributing/workflow/pr_workflow.html https://contributing.godotengine.org/en/latest/organization/pull_requests/creating_pull_requests.html
431 /contributing/workflow/testing_pull_requests.html https://contributing.godotengine.org/en/latest/organization/pull_requests/testing.html
432 /contributing/development/core_and_modules/2d_coordinate_systems.html /engine_details/architecture/2d_coordinate_systems.html
433 /contributing/development/core_and_modules/common_engine_methods_and_macros.html /engine_details/architecture/common_engine_methods_and_macros.html
434 /contributing/development/core_and_modules/core_types.html //architecture/core_types.html
435 /contributing/development/core_and_modules/custom_audiostreams.html //architecture/custom_audiostreams.html
436 /contributing/development/core_and_modules/custom_godot_servers.html //architecture/custom_godot_servers.html
437 /contributing/development/core_and_modules/custom_modules_in_cpp.html //architecture/custom_modules_in_cpp.html
438 /contributing/development/core_and_modules/custom_platform_ports.html //architecture/custom_platform_ports.html
439 /contributing/development/core_and_modules/custom_resource_format_loaders.html //architecture/custom_resource_format_loaders.html
440 /contributing/development/core_and_modules/godot_architecture_diagram.html //architecture/godot_architecture_diagram.html
441 /contributing/development/core_and_modules/index.html //architecture/index.html
442 /contributing/development/core_and_modules/inheritance_class_tree.html //architecture/inheritance_class_tree.html
443 /contributing/development/core_and_modules/internal_rendering_architecture.html //architecture/internal_rendering_architecture.html
444 /contributing/development/core_and_modules/object_class.html //architecture/object_class.html
445 /contributing/development/core_and_modules/scripting_development.html //architecture/scripting_development.html
446 /contributing/development/core_and_modules/unit_testing.html //architecture/unit_testing.html
447 /contributing/development/core_and_modules/variant_class.html //architecture/variant_class.html
448 /contributing/documentation/class_reference_primer.html engine_details/class_reference/index.html
449 /contributing/development/compiling/compiling_for_android.html /engine_details/development/compiling/compiling_for_android.html
450 /contributing/development/compiling/compiling_for_ios.html /engine_details/development/compiling/compiling_for_ios.html
451 /contributing/development/compiling/compiling_for_linuxbsd.html /engine_details/development/compiling/compiling_for_linuxbsd.html
452 /contributing/development/compiling/compiling_for_macos.html /engine_details/development/compiling/compiling_for_macos.html
453 /contributing/development/compiling/compiling_for_visionos.html /engine_details/development/compiling/compiling_for_visionos.html
454 /contributing/development/compiling/compiling_for_web.html /engine_details/development/compiling/compiling_for_web.html
455 /contributing/development/compiling/compiling_for_windows.html /engine_details/development/compiling/compiling_for_windows.html
456 /contributing/development/compiling/compiling_with_dotnet.html /engine_details/development/compiling/compiling_with_dotnet.html
457 /contributing/development/compiling/compiling_with_script_encryption_key.html /engine_details/development/compiling/compiling_with_script_encryption_key.html
458 /contributing/development/compiling/cross-compiling_for_ios_on_linux.html /engine_details/development/compiling/cross-compiling_for_ios_on_linux.html
459 /contributing/development/compiling/getting_source.html /engine_details/development/compiling/getting_source.html
460 /contributing/development/compiling/index.html /engine_details/development/compiling/index.html
461 /contributing/development/compiling/introduction_to_the_buildsystem.html /engine_details/development/compiling/introduction_to_the_buildsystem.html
462 /contributing/development/compiling/optimizing_for_size.html /engine_details/development/compiling/optimizing_for_size.html
463 /contributing/development/configuring_an_ide/android_studio.html /engine_details/development/configuring_an_ide/android_studio.html
464 /contributing/development/configuring_an_ide/clion.html /engine_details/development/configuring_an_ide/clion.html
465 /contributing/development/configuring_an_ide/code_blocks.html /engine_details/development/configuring_an_ide/code_blocks.html
466 /contributing/development/configuring_an_ide/index.html /engine_details/development/configuring_an_ide/index.html
467 /contributing/development/configuring_an_ide/kdevelop.html /engine_details/development/configuring_an_ide/kdevelop.html
468 /contributing/development/configuring_an_ide/qt_creator.html /engine_details/development/configuring_an_ide/qt_creator.html
469 /contributing/development/configuring_an_ide/rider.html /engine_details/development/configuring_an_ide/rider.html
470 /contributing/development/configuring_an_ide/rider.html /engine_details/development/configuring_an_ide/rider.html
471 /contributing/development/configuring_an_ide/visual_studio.html /engine_details/development/configuring_an_ide/visual_studio.html
472 /contributing/development/configuring_an_ide/visual_studio_code.html /engine_details/development/configuring_an_ide/visual_studio_code.html
473 /contributing/development/configuring_an_ide/xcode.html /engine_details/development/configuring_an_ide/xcode.html
474 /contributing/development/debugging/index.html /engine_details/development/debugging/index.html
475 /contributing/development/debugging/macos_debug.html /engine_details/development/debugging/macos_debug.html
476 /contributing/development/debugging/using_cpp_profilers.html /engine_details/development/debugging/using_cpp_profilers.html
477 /contributing/development/debugging/using_sanitizers.html /engine_details/development/debugging/using_sanitizers.html
478 /contributing/development/debugging/vulkan/index.html /engine_details/development/debugging/vulkan/index.html
479 /contributing/development/debugging/vulkan/vulkan_validation_layers.html /engine_details/development/debugging/vulkan/vulkan_validation_layers.html
480 /contributing/development/handling_compatibility_breakages.html /engine_details/development/handling_compatibility_breakages.html
481 /contributing/development/editor/creating_icons.html /engine_details/editor/creating_icons.html
482 /contributing/development/editor/index.html /engine_details/editor/index.html
483 /contributing/development/editor/introduction_to_editor_development.html /engine_details/editor/introduction_to_editor_development.html
484 /contributing/development/file_formats/gdscript_grammar.html /engine_details/file_formats/gdscript_grammar.html
+1 -1
View File
@@ -44,7 +44,7 @@ text somewhere in your game or derivative project.
This text reads as follows:
::
.. code-block:: none
This game uses Godot Engine, available under the following license:
+13 -9
View File
@@ -142,7 +142,7 @@ scripting API.
| Godot datatype | Closest C++ STL datatype | Comment |
+=======================+==========================+=======================================================================================+
| |string| 📜 | ``std::string`` | **Use this as the "default" string type.** ``String`` uses UTF-32 encoding |
| | | to improve performance thanks to its fixed character size. |
| | | to simplify processing thanks to its fixed character size. |
+-----------------------+--------------------------+---------------------------------------------------------------------------------------+
| |vector| | ``std::vector`` | **Use this as the "default" vector type.** Uses copy-on-write (COW) semantics. |
| | | This means it's generally slower but can be copied around almost for free. |
@@ -180,8 +180,10 @@ scripting API.
| | | no heap allocations. |
+-----------------------+--------------------------+---------------------------------------------------------------------------------------+
| |span| | ``std::span`` | Represents read-only access to a contiguous array without needing to copy any data. |
| | | See `pull request description <https://github.com/godotengine/godot/pull/100293>`__ |
| | | for details. |
| | | Note that ``Span`` is designed to be a high performance API: It does not perform |
| | | parameter correctness checks in the same way you might be used to with other Godot |
| | | containers. Use with care. |
| | | `Span` can be constructed from most array-like containers (e.g. ``vector.span()``). |
+-----------------------+--------------------------+---------------------------------------------------------------------------------------+
| |rb_set| | ``std::set`` | Uses a `red-black tree <https://en.wikipedia.org/wiki/Red-black_tree>`__ |
| | | for faster access. |
@@ -195,8 +197,9 @@ scripting API.
| | | Use this map type when either of these affordances are needed. Use ``AHashMap`` |
| | | otherwise. |
+-----------------------+--------------------------+---------------------------------------------------------------------------------------+
| |rb_map| | ``std::map`` | Uses a `red-black tree <https://en.wikipedia.org/wiki/Red-black-tree>`__ |
| | | for faster access. |
| |rb_map| | ``std::map`` | Map type that uses a |
| | | `red-black tree <https://en.wikipedia.org/wiki/Red-black-tree>`__ to find keys. |
| | | The performance benefits of ``RBMap`` aren't established, so prefer using other types.|
+-----------------------+--------------------------+---------------------------------------------------------------------------------------+
| |dictionary| 📜 | ``std::unordered_map`` | Keys and values can be of any Variant type. No static typing is imposed. |
| | | Uses shared reference counting, similar to ``std::shared_ptr``. |
@@ -204,7 +207,8 @@ scripting API.
+-----------------------+--------------------------+---------------------------------------------------------------------------------------+
| |typed_dictionary| 📜 | ``std::unordered_map`` | Subclass of ``Dictionary`` but with static typing for its keys and values. |
+-----------------------+--------------------------+---------------------------------------------------------------------------------------+
| |pair| | ``std::pair`` | Stores a single key-value pair. |
| |pair| | ``std::pair`` | Stores a single pair. See also ``KeyValue`` in the same file, which uses read-only |
| | | keys. |
+-----------------------+--------------------------+---------------------------------------------------------------------------------------+
.. |string| replace:: `String <https://github.com/godotengine/godot/blob/master/core/string/ustring.h>`__
@@ -214,8 +218,8 @@ scripting API.
.. |string_name| replace:: `StringName <https://github.com/godotengine/godot/blob/master/core/string/string_name.h>`__
.. |local_vector| replace:: `LocalVector <https://github.com/godotengine/godot/blob/master/core/templates/local_vector.h>`__
.. |array| replace:: `Array <https://github.com/godotengine/godot/blob/master/core/variant/array.h>`__
.. |typed_array| replace:: `TypedArray <https://github.com/godotengine/godot/blob/master/core/variant/array.h>`__
.. |packed_array| replace:: `Packed*Array <https://github.com/godotengine/godot/blob/master/core/variant/array.h>`__
.. |typed_array| replace:: `TypedArray <https://github.com/godotengine/godot/blob/master/core/variant/typed_array.h>`__
.. |packed_array| replace:: `Packed*Array <https://github.com/godotengine/godot/blob/master/core/variant/variant.h>`__
.. |list| replace:: `List <https://github.com/godotengine/godot/blob/master/core/templates/list.h>`__
.. |fixed_vector| replace:: `FixedVector <https://github.com/godotengine/godot/blob/master/core/templates/fixed_vector.h>`__
.. |span| replace:: `Span <https://github.com/godotengine/godot/blob/master/core/templates/span.h>`__
@@ -224,7 +228,7 @@ scripting API.
.. |a_hash_map| replace:: `AHashMap <https://github.com/godotengine/godot/blob/master/core/templates/a_hash_map.h>`__
.. |rb_map| replace:: `RBMap <https://github.com/godotengine/godot/blob/master/core/templates/rb_map.h>`__
.. |dictionary| replace:: `Dictionary <https://github.com/godotengine/godot/blob/master/core/variant/dictionary.h>`__
.. |typed_dictionary| replace:: `TypedDictionary <https://github.com/godotengine/godot/blob/master/core/variant/dictionary.h>`__
.. |typed_dictionary| replace:: `TypedDictionary <https://github.com/godotengine/godot/blob/master/core/variant/typed_dictionary.h>`__
.. |pair| replace:: `Pair <https://github.com/godotengine/godot/blob/master/core/templates/pair.h>`__
Math types
@@ -300,7 +300,7 @@ This diagram represents the structure of rendering classes in Godot, including t
.. image:: img/rendering_architecture_diagram.webp
`View at full size <https://raw.githubusercontent.com/godotengine/godot-docs/master/contributing/development/core_and_modules/img/rendering_architecture_diagram.webp>`__
`View at full size <https://raw.githubusercontent.com/godotengine/godot-docs/master/engine_details/architecture/img/rendering_architecture_diagram.webp>`__
.. _doc_internal_rendering_architecture_core_shaders:
@@ -74,6 +74,14 @@ The MoltenVK static ``.xcframework`` folder must also be placed in the
``ios_xcode`` folder once it has been created. MoltenVK is always statically
linked on iOS; there is no dynamic linking option available, unlike macOS.
.. warning::
Compiling for the iOS simulator is currently not supported as per
`GH-102149 <https://github.com/godotengine/godot/issues/102149>`__.
Apple Silicon Macs can run iOS apps natively, so you can run exported iOS projects
directly on an Apple Silicon Mac without needing the iOS simulator.
Run
---
+85 -79
View File
@@ -251,85 +251,91 @@ Others must be manually bound in the Editor Settings if desired.
Text editor
-----------
+---------------------------+---------------------------------+----------------------------------+-------------------------------------------------+
| Action name | Windows, Linux | macOS | Editor setting |
+===========================+=================================+==================================+=================================================+
| Cut | :kbd:`Ctrl + X` | :kbd:`Cmd + X` | ``script_text_editor/cut`` |
+---------------------------+---------------------------------+----------------------------------+-------------------------------------------------+
| Copy | :kbd:`Ctrl + C` | :kbd:`Cmd + C` | ``script_text_editor/copy`` |
+---------------------------+---------------------------------+----------------------------------+-------------------------------------------------+
| Paste | :kbd:`Ctrl + V` | :kbd:`Cmd + V` | ``script_text_editor/paste`` |
+---------------------------+---------------------------------+----------------------------------+-------------------------------------------------+
| Select All | :kbd:`Ctrl + A` | :kbd:`Cmd + A` | ``script_text_editor/select_all`` |
+---------------------------+---------------------------------+----------------------------------+-------------------------------------------------+
| Find | :kbd:`Ctrl + F` | :kbd:`Cmd + F` | ``script_text_editor/find`` |
+---------------------------+---------------------------------+----------------------------------+-------------------------------------------------+
| Find Next | :kbd:`F3` | :kbd:`Cmd + G` | ``script_text_editor/find_next`` |
+---------------------------+---------------------------------+----------------------------------+-------------------------------------------------+
| Find Previous | :kbd:`Shift + F3` | :kbd:`Cmd + Shift + G` | ``script_text_editor/find_previous`` |
+---------------------------+---------------------------------+----------------------------------+-------------------------------------------------+
| Find in Files | :kbd:`Ctrl + Shift + F` | :kbd:`Cmd + Shift + F` | ``script_text_editor/find_in_files`` |
+---------------------------+---------------------------------+----------------------------------+-------------------------------------------------+
| Replace | :kbd:`Ctrl + R` | :kbd:`Opt + Cmd + F` | ``script_text_editor/replace`` |
+---------------------------+---------------------------------+----------------------------------+-------------------------------------------------+
| Replace in Files | :kbd:`Ctrl + Shift + R` | :kbd:`Cmd + Shift + R` | ``script_text_editor/replace_in_files`` |
+---------------------------+---------------------------------+----------------------------------+-------------------------------------------------+
| Undo | :kbd:`Ctrl + Z` | :kbd:`Cmd + Z` | ``script_text_editor/undo`` |
+---------------------------+---------------------------------+----------------------------------+-------------------------------------------------+
| Redo | :kbd:`Ctrl + Y` | :kbd:`Cmd + Y` | ``script_text_editor/redo`` |
+---------------------------+---------------------------------+----------------------------------+-------------------------------------------------+
| Move Up | :kbd:`Alt + Up Arrow` | :kbd:`Opt + Up Arrow` | ``script_text_editor/move_up`` |
+---------------------------+---------------------------------+----------------------------------+-------------------------------------------------+
| Move Down | :kbd:`Alt + Down Arrow` | :kbd:`Opt + Down Arrow` | ``script_text_editor/move_down`` |
+---------------------------+---------------------------------+----------------------------------+-------------------------------------------------+
| Delete Line | :kbd:`Ctrl + Shift + K` | :kbd:`Cmd + Shift + K` | ``script_text_editor/delete_line`` |
+---------------------------+---------------------------------+----------------------------------+-------------------------------------------------+
| Toggle Comment | :kbd:`Ctrl + K` | :kbd:`Cmd + K` | ``script_text_editor/toggle_comment`` |
+---------------------------+---------------------------------+----------------------------------+-------------------------------------------------+
| Fold/Unfold Line | :kbd:`Alt + F` | :kbd:`Ctrl + Cmd + F` | ``script_text_editor/toggle_fold_line`` |
+---------------------------+---------------------------------+----------------------------------+-------------------------------------------------+
| Duplicate Lines | :kbd:`Ctrl + Alt + Down Arrow` | :kbd:`Cmd + Shift + Down Arrow` | ``script_text_editor/duplicate_lines`` |
+---------------------------+---------------------------------+----------------------------------+-------------------------------------------------+
| Duplicate Selection | :kbd:`Ctrl + Shift + D` | :kbd:`Cmd + Shift + C` | ``script_text_editor/duplicate_selection`` |
+---------------------------+---------------------------------+----------------------------------+-------------------------------------------------+
| Complete Symbol | :kbd:`Ctrl + Space` | :kbd:`Ctrl + Space` | ``script_text_editor/complete_symbol`` |
+---------------------------+---------------------------------+----------------------------------+-------------------------------------------------+
| Evaluate Selection | :kbd:`Ctrl + Shift + E` | :kbd:`Cmd + Shift + E` | ``script_text_editor/evaluate_selection`` |
+---------------------------+---------------------------------+----------------------------------+-------------------------------------------------+
| Trim Trailing Whitespace | :kbd:`Ctrl + Alt + T` | :kbd:`Opt + Cmd + T` | ``script_text_editor/trim_trailing_whitespace`` |
+---------------------------+---------------------------------+----------------------------------+-------------------------------------------------+
| Uppercase | :kbd:`Shift + F4` | :kbd:`Shift + F4` | ``script_text_editor/convert_to_uppercase`` |
+---------------------------+---------------------------------+----------------------------------+-------------------------------------------------+
| Lowercase | :kbd:`Shift + F5` | :kbd:`Shift + F5` | ``script_text_editor/convert_to_lowercase`` |
+---------------------------+---------------------------------+----------------------------------+-------------------------------------------------+
| Capitalize | :kbd:`Shift + F6` | :kbd:`Shift + F6` | ``script_text_editor/capitalize`` |
+---------------------------+---------------------------------+----------------------------------+-------------------------------------------------+
| Convert Indent to Spaces | :kbd:`Ctrl + Shift + Y` | :kbd:`Cmd + Shift + Y` | ``script_text_editor/convert_indent_to_spaces`` |
+---------------------------+---------------------------------+----------------------------------+-------------------------------------------------+
| Convert Indent to Tabs | :kbd:`Ctrl + Shift + I` | :kbd:`Cmd + Shift + I` | ``script_text_editor/convert_indent_to_tabs`` |
+---------------------------+---------------------------------+----------------------------------+-------------------------------------------------+
| Auto Indent | :kbd:`Ctrl + I` | :kbd:`Cmd + I` | ``script_text_editor/auto_indent`` |
+---------------------------+---------------------------------+----------------------------------+-------------------------------------------------+
| Toggle Bookmark | :kbd:`Ctrl + Alt + B` | :kbd:`Opt + Cmd + B` | ``script_text_editor/toggle_bookmark`` |
+---------------------------+---------------------------------+----------------------------------+-------------------------------------------------+
| Go to Next Bookmark | :kbd:`Ctrl + B` | :kbd:`Cmd + B` | ``script_text_editor/goto_next_bookmark`` |
+---------------------------+---------------------------------+----------------------------------+-------------------------------------------------+
| Go to Previous Bookmark | :kbd:`Ctrl + Shift + B` | :kbd:`Cmd + Shift + B` | ``script_text_editor/goto_previous_bookmark`` |
+---------------------------+---------------------------------+----------------------------------+-------------------------------------------------+
| Go to Function | :kbd:`Ctrl + Alt + F` | :kbd:`Ctrl + Cmd + J` | ``script_text_editor/goto_function`` |
+---------------------------+---------------------------------+----------------------------------+-------------------------------------------------+
| Go to Line | :kbd:`Ctrl + L` | :kbd:`Cmd + L` | ``script_text_editor/goto_line`` |
+---------------------------+---------------------------------+----------------------------------+-------------------------------------------------+
| Toggle Breakpoint | :kbd:`F9` | :kbd:`Cmd + Shift + B` | ``script_text_editor/toggle_breakpoint`` |
+---------------------------+---------------------------------+----------------------------------+-------------------------------------------------+
| Remove All Breakpoints | :kbd:`Ctrl + Shift + F9` | :kbd:`Cmd + Shift + F9` | ``script_text_editor/remove_all_breakpoints`` |
+---------------------------+---------------------------------+----------------------------------+-------------------------------------------------+
| Go to Next Breakpoint | :kbd:`Ctrl + .` | :kbd:`Cmd + .` | ``script_text_editor/goto_next_breakpoint`` |
+---------------------------+---------------------------------+----------------------------------+-------------------------------------------------+
| Go to Previous Breakpoint | :kbd:`Ctrl + ,` | :kbd:`Cmd + ,` | ``script_text_editor/goto_previous_breakpoint`` |
+---------------------------+---------------------------------+----------------------------------+-------------------------------------------------+
| Contextual Help | :kbd:`Alt + F1` | :kbd:`Opt + Shift + Space` | ``script_text_editor/contextual_help`` |
+---------------------------+---------------------------------+----------------------------------+-------------------------------------------------+
+---------------------------+---------------------------------+----------------------------------+------------------------------------------------------+
| Action name | Windows, Linux | macOS | Editor setting |
+===========================+=================================+==================================+======================================================+
| Cut | :kbd:`Ctrl + X` | :kbd:`Cmd + X` | ``script_text_editor/cut`` |
+---------------------------+---------------------------------+----------------------------------+------------------------------------------------------+
| Copy | :kbd:`Ctrl + C` | :kbd:`Cmd + C` | ``script_text_editor/copy`` |
+---------------------------+---------------------------------+----------------------------------+------------------------------------------------------+
| Paste | :kbd:`Ctrl + V` | :kbd:`Cmd + V` | ``script_text_editor/paste`` |
+---------------------------+---------------------------------+----------------------------------+------------------------------------------------------+
| Select All | :kbd:`Ctrl + A` | :kbd:`Cmd + A` | ``script_text_editor/select_all`` |
+---------------------------+---------------------------------+----------------------------------+------------------------------------------------------+
| Find | :kbd:`Ctrl + F` | :kbd:`Cmd + F` | ``script_text_editor/find`` |
+---------------------------+---------------------------------+----------------------------------+------------------------------------------------------+
| Find Next | :kbd:`F3` | :kbd:`Cmd + G` | ``script_text_editor/find_next`` |
+---------------------------+---------------------------------+----------------------------------+------------------------------------------------------+
| Find Previous | :kbd:`Shift + F3` | :kbd:`Cmd + Shift + G` | ``script_text_editor/find_previous`` |
+---------------------------+---------------------------------+----------------------------------+------------------------------------------------------+
| Find in Files | :kbd:`Ctrl + Shift + F` | :kbd:`Cmd + Shift + F` | ``script_text_editor/find_in_files`` |
+---------------------------+---------------------------------+----------------------------------+------------------------------------------------------+
| Replace | :kbd:`Ctrl + R` | :kbd:`Opt + Cmd + F` | ``script_text_editor/replace`` |
+---------------------------+---------------------------------+----------------------------------+------------------------------------------------------+
| Replace in Files | :kbd:`Ctrl + Shift + R` | :kbd:`Cmd + Shift + R` | ``script_text_editor/replace_in_files`` |
+---------------------------+---------------------------------+----------------------------------+------------------------------------------------------+
| Undo | :kbd:`Ctrl + Z` | :kbd:`Cmd + Z` | ``script_text_editor/undo`` |
+---------------------------+---------------------------------+----------------------------------+------------------------------------------------------+
| Redo | :kbd:`Ctrl + Y` | :kbd:`Cmd + Y` | ``script_text_editor/redo`` |
+---------------------------+---------------------------------+----------------------------------+------------------------------------------------------+
| Move Up | :kbd:`Alt + Up Arrow` | :kbd:`Opt + Up Arrow` | ``script_text_editor/move_up`` |
+---------------------------+---------------------------------+----------------------------------+------------------------------------------------------+
| Move Down | :kbd:`Alt + Down Arrow` | :kbd:`Opt + Down Arrow` | ``script_text_editor/move_down`` |
+---------------------------+---------------------------------+----------------------------------+------------------------------------------------------+
| Delete Line | :kbd:`Ctrl + Shift + K` | :kbd:`Cmd + Shift + K` | ``script_text_editor/delete_line`` |
+---------------------------+---------------------------------+----------------------------------+------------------------------------------------------+
| Toggle Comment | :kbd:`Ctrl + K` | :kbd:`Cmd + K` | ``script_text_editor/toggle_comment`` |
+---------------------------+---------------------------------+----------------------------------+------------------------------------------------------+
| Fold/Unfold Line | :kbd:`Alt + F` | :kbd:`Ctrl + Cmd + F` | ``script_text_editor/toggle_fold_line`` |
+---------------------------+---------------------------------+----------------------------------+------------------------------------------------------+
| Duplicate Lines | :kbd:`Ctrl + Alt + Down Arrow` | :kbd:`Cmd + Shift + Down Arrow` | ``script_text_editor/duplicate_lines`` |
+---------------------------+---------------------------------+----------------------------------+------------------------------------------------------+
| Duplicate Selection | :kbd:`Ctrl + Shift + D` | :kbd:`Cmd + Shift + C` | ``script_text_editor/duplicate_selection`` |
+---------------------------+---------------------------------+----------------------------------+------------------------------------------------------+
| Select Down | :kbd:`Ctrl + Shift + Down Arrow`| :kbd:`Shift + Opt + Down Arrow` | ``common/ui_text_caret_add_below`` |
+---------------------------+---------------------------------+----------------------------------+------------------------------------------------------+
| Select Up | :kbd:`Ctrl + Shift + Up Arrow` | :kbd:`Shift + Opt + Up Arrow` | ``common/ui_text_caret_add_above`` |
+---------------------------+---------------------------------+----------------------------------+------------------------------------------------------+
| Select Next Occurrence | :kbd:`Ctrl + D` | :kbd:`Cmd + D` | ``common/ui_text_add_selection_for_next_occurrence`` |
+---------------------------+---------------------------------+----------------------------------+------------------------------------------------------+
| Complete Symbol | :kbd:`Ctrl + Space` | :kbd:`Ctrl + Space` | ``script_text_editor/complete_symbol`` |
+---------------------------+---------------------------------+----------------------------------+------------------------------------------------------+
| Evaluate Selection | :kbd:`Ctrl + Shift + E` | :kbd:`Cmd + Shift + E` | ``script_text_editor/evaluate_selection`` |
+---------------------------+---------------------------------+----------------------------------+------------------------------------------------------+
| Trim Trailing Whitespace | :kbd:`Ctrl + Alt + T` | :kbd:`Opt + Cmd + T` | ``script_text_editor/trim_trailing_whitespace`` |
+---------------------------+---------------------------------+----------------------------------+------------------------------------------------------+
| Uppercase | :kbd:`Shift + F4` | :kbd:`Shift + F4` | ``script_text_editor/convert_to_uppercase`` |
+---------------------------+---------------------------------+----------------------------------+------------------------------------------------------+
| Lowercase | :kbd:`Shift + F5` | :kbd:`Shift + F5` | ``script_text_editor/convert_to_lowercase`` |
+---------------------------+---------------------------------+----------------------------------+------------------------------------------------------+
| Capitalize | :kbd:`Shift + F6` | :kbd:`Shift + F6` | ``script_text_editor/capitalize`` |
+---------------------------+---------------------------------+----------------------------------+------------------------------------------------------+
| Convert Indent to Spaces | :kbd:`Ctrl + Shift + Y` | :kbd:`Cmd + Shift + Y` | ``script_text_editor/convert_indent_to_spaces`` |
+---------------------------+---------------------------------+----------------------------------+------------------------------------------------------+
| Convert Indent to Tabs | :kbd:`Ctrl + Shift + I` | :kbd:`Cmd + Shift + I` | ``script_text_editor/convert_indent_to_tabs`` |
+---------------------------+---------------------------------+----------------------------------+------------------------------------------------------+
| Auto Indent | :kbd:`Ctrl + I` | :kbd:`Cmd + I` | ``script_text_editor/auto_indent`` |
+---------------------------+---------------------------------+----------------------------------+------------------------------------------------------+
| Toggle Bookmark | :kbd:`Ctrl + Alt + B` | :kbd:`Opt + Cmd + B` | ``script_text_editor/toggle_bookmark`` |
+---------------------------+---------------------------------+----------------------------------+------------------------------------------------------+
| Go to Next Bookmark | :kbd:`Ctrl + B` | :kbd:`Cmd + B` | ``script_text_editor/goto_next_bookmark`` |
+---------------------------+---------------------------------+----------------------------------+------------------------------------------------------+
| Go to Previous Bookmark | :kbd:`Ctrl + Shift + B` | :kbd:`Cmd + Shift + B` | ``script_text_editor/goto_previous_bookmark`` |
+---------------------------+---------------------------------+----------------------------------+------------------------------------------------------+
| Go to Function | :kbd:`Ctrl + Alt + F` | :kbd:`Ctrl + Cmd + J` | ``script_text_editor/goto_function`` |
+---------------------------+---------------------------------+----------------------------------+------------------------------------------------------+
| Go to Line | :kbd:`Ctrl + L` | :kbd:`Cmd + L` | ``script_text_editor/goto_line`` |
+---------------------------+---------------------------------+----------------------------------+------------------------------------------------------+
| Toggle Breakpoint | :kbd:`F9` | :kbd:`Cmd + Shift + B` | ``script_text_editor/toggle_breakpoint`` |
+---------------------------+---------------------------------+----------------------------------+------------------------------------------------------+
| Remove All Breakpoints | :kbd:`Ctrl + Shift + F9` | :kbd:`Cmd + Shift + F9` | ``script_text_editor/remove_all_breakpoints`` |
+---------------------------+---------------------------------+----------------------------------+------------------------------------------------------+
| Go to Next Breakpoint | :kbd:`Ctrl + .` | :kbd:`Cmd + .` | ``script_text_editor/goto_next_breakpoint`` |
+---------------------------+---------------------------------+----------------------------------+------------------------------------------------------+
| Go to Previous Breakpoint | :kbd:`Ctrl + ,` | :kbd:`Cmd + ,` | ``script_text_editor/goto_previous_breakpoint`` |
+---------------------------+---------------------------------+----------------------------------+------------------------------------------------------+
| Contextual Help | :kbd:`Alt + F1` | :kbd:`Opt + Shift + Space` | ``script_text_editor/contextual_help`` |
+---------------------------+---------------------------------+----------------------------------+------------------------------------------------------+
Script editor
-------------
+2 -2
View File
@@ -18,7 +18,7 @@ Usage
If the inspector dock is visible, clicking on a node in the scene tree will automatically
display its properties.
If it is not visible, you can show it by navigating to
**Editor > Editor Settings > Editor Docks > Inspector**.
**Editor > Editor Docks > Inspector**.
At the top of the dock are the file and navigation buttons.
@@ -129,4 +129,4 @@ various view and edit options.
.. Using the tool menu
.. List each property type and how to edit it
.. For numerical inputs, mention and link to a page about formulas
.. Refer to :ref:`doc_filesystem_dock`
.. Refer to :ref:`doc_filesystem_dock`
+9
View File
@@ -57,6 +57,15 @@ When the export completes, the output folder should look like this:
.. image:: img/ios_export_output.webp
.. warning::
Exporting for the iOS simulator is currently not supported as per
`GH-102149 <https://github.com/godotengine/godot/issues/102149>`__.
Apple Silicon Macs can run iOS apps natively, so you can run exported iOS projects
directly on an Apple Silicon Mac without needing the iOS simulator.
Opening **exported_xcode_project_name.xcodeproj** lets you build and deploy
like any other iOS app.
@@ -195,7 +195,7 @@ Method ``create_action`` adds a new ``backward_undo_ops`` optional parameter
Behavior changes
----------------
In 4.1 some behavior changes have been introduced, which might require you to adjust your project.
In 4.1, some behavior changes have been introduced, which might require you to adjust your project.
================================================================================================================================================================================================== ===========
Change Introduced
@@ -224,7 +224,7 @@ Type renamed to ``EditorSceneFormatImporterFBX2GLTF``
Behavior changes
----------------
In 4.3 some behavior changes have been introduced, which might require you to adjust your project.
In 4.3, some behavior changes have been introduced, which might require you to adjust your project.
Core
~~~~
@@ -299,7 +299,7 @@ Multiplayer
This is a breaking change for the high-level multiplayer protocol making it incompatible with previous Godot versions.
Upgrade both your server and client versions to Godot 4.3 to handle this change gracefully.
Note that high-level multiplayer facilities are only ever meant to be compatible with server and client using the same Godot version. It is recommended to implement some kind of version checking.
Rendering
+56 -3
View File
@@ -39,7 +39,7 @@ Core
Change GDScript Compatible C# Binary Compatible C# Source Compatible Introduced
======================================================================================================================== =================== ==================== ==================== ============
**JSONRPC**
Method ``set_scope`` replaced by ``set_method`` optional parameter |❌| |✔️ with compat| |✔️ with compat| `GH-104890`_
Method ``set_scope`` replaced by ``set_method`` |❌| | with stub| | with stub| `GH-104890`_
**Node**
Method ``get_rpc_config`` renamed to ``get_node_rpc_config`` |❌| |✔️ with compat| |✔️ with compat| `GH-106848`_
Method ``set_name`` changes ``name`` parameter type from ``String`` to ``StringName`` |✔️| |✔️ with compat| |✔️ with compat| `GH-76560`_
@@ -64,7 +64,7 @@ Method ``instance_set_interpolated`` removed
.. note::
In C#, the enum ``RenderingDevice.Features`` breaks compatibility because of the way the bindings generator
detects the enum prefix. New members where added to the enum in `GH-103941`_ that caused the enum member
detects the enum prefix. New members were added to the enum in `GH-103941`_ that caused the enum member
``Address`` to be renamed to ``BufferDeviceAddress``.
GLTF
@@ -188,7 +188,19 @@ Method ``_get_option_icon`` changes return type from ``ImageTexture`` to ``Textu
Behavior changes
----------------
In 4.5 some behavior changes have been introduced, which might require you to adjust your project.
In 4.5, some behavior changes have been introduced, which might require you to adjust your project.
TileMapLayer
~~~~~~~~~~~~
:ref:`TileMapLayer.get_coords_for_body_rid() <class_TileMapLayer_method_get_coords_for_body_rid>`
will return different values in 4.5 compared to 4.4,
as TileMapLayer physics chunking is enabled by default. Higher values of
:ref:`TileMapLayer.physics_quadrant_size <class_TileMapLayer_property_physics_quadrant_size>`
will make this function less precise. To get the exact cell coordinates like in 4.4 and prior
versions, you need to set
:ref:`TileMapLayer.physics_quadrant_size <class_TileMapLayer_property_physics_quadrant_size>`
to ``1``, which disables physics chunking.
3D Model Import
~~~~~~~~~~~~~~~
@@ -204,6 +216,27 @@ new behavior, you must change the "Naming Version" option at the bottom of the I
Core
~~~~
.. note::
:ref:`Resource.duplicate(true) <class_Resource_method_duplicate>` (which performs
deep duplication) now only duplicates resources internal to the resource file
it's called on. In 4.4, this duplicated everything instead, including external resources.
If you were deep-duplicating a resource that contained references to other
external resources, those external resources aren't duplicated anymore. You must call
:ref:`Resource.duplicate_deep(RESOURCE_DEEP_DUPLICATE_ALL) <class_Resource_method_duplicate_deep>`
instead to keep the old behavior.
.. note::
:ref:`ProjectSettings.add_property_info() <class_ProjectSettings_method_add_property_info>`
now prints a warning when the dictionary parameter has missing keys or invalid keys.
Most importantly, it will now warn when a ``usage`` key is passed, as this key is not used.
This was also the case before 4.5, but it was silently ignored instead.
As a reminder, to set property usage information correctly, you must use
:ref:`ProjectSettings.set_as_basic() <class_ProjectSettings_method_set_as_basic>`,
:ref:`ProjectSettings.set_restart_if_changed() <class_ProjectSettings_method_set_restart_if_changed>`,
or :ref:`ProjectSettings.set_as_internal() <class_ProjectSettings_method_set_as_internal>` instead.
.. note::
In C#, ``StringExtensions.PathJoin`` now avoids adding an extra path separator when the original string is empty,
@@ -220,6 +253,25 @@ Core
the shortest arc between the two input vectors. Previously, it would return incorrect values for certain inputs
(`GH-107618`_).
Navigation
~~~~~~~~~~
.. note::
By default, the regions in a NavigationServer map now update asynchronously using threads to improve performance.
This can cause additional delay in the update due to thread synchronisation.
The asynchronous region update can be toggled with the ``navigation/world/region_use_async_iterations`` project setting.
.. note::
The merging of navmeshes in the NavigationServer has changed processing order. Regions now merge and cache
internal navmeshes first, then the remaining free edges are merged by the navigation map.
If a project had navigation map synchronisation errors before, it might now have shifted
affected edges, making already existing errors in a layout more noticeable in the pathfinding.
The ``navigation/2d_or_3d/merge_rasterizer_cell_scale`` project setting can be set to a lower value
to increase the detail of the rasterization grid (with `0.01` being the smallest cell size possible).
If edge merge errors still persist with the lowest possible rasterization scale value,
the error may be caused by overlap: two navmeshes are stacked on top of each other, causing geometry conflict.
Physics
~~~~~~~
@@ -241,6 +293,7 @@ Text
to the same value you were passing as ``size_in_percent``.
.. |❌| replace:: :abbr:`❌ (This API breaks compatibility.)`
.. |❌ with stub| replace:: :abbr:`❌ (Stub compatibility methods were added to prevent crashes. However, this API is not functional anymore.)`
.. |✔️| replace:: :abbr:`✔️ (This API does not break compatibility.)`
.. |✔️ with compat| replace:: :abbr:`✔️ (This API does not break compatibility. A compatibility method was added.)`
@@ -21,7 +21,7 @@ Initialize the plugin
To use the ``GodotGooglePlayBilling`` API:
1. Access the ``BillingClient`` autoload singleton, it's automatically added when the plugin is enabled.
1. Access the ``BillingClient``.
2. Connect to its signals to receive billing results.
3. Call ``start_connection``.
@@ -29,17 +29,19 @@ Initialization example:
::
var billing_client: BillingClient
func _ready():
BillingClient.connected.connect(_on_connected) # No params
BillingClient.disconnected.connect(_on_disconnected) # No params
BillingClient.connect_error.connect(_on_connect_error) # response_code: int, debug_message: String
BillingClient.query_product_details_response.connect(_on_query_product_details_response) # response: Dictionary
BillingClient.query_purchases_response.connect(_on_query_purchases_response) # response: Dictionary
BillingClient.on_purchase_updated.connect(_on_purchase_updated) # response: Dictionary
BillingClient.consume_purchase_response.connect(_on_consume_purchase_response) # response: Dictionary
BillingClient.acknowledge_purchase_response.connect(_on_acknowledge_purchase_response) # response: Dictionary
billing_client = BillingClient.new()
billing_client.connected.connect(_on_connected) # No params
billing_client.disconnected.connect(_on_disconnected) # No params
billing_client.connect_error.connect(_on_connect_error) # response_code: int, debug_message: String
billing_client.query_product_details_response.connect(_on_query_product_details_response) # response: Dictionary
billing_client.query_purchases_response.connect(_on_query_purchases_response) # response: Dictionary
billing_client.on_purchase_updated.connect(_on_purchase_updated) # response: Dictionary
billing_client.consume_purchase_response.connect(_on_consume_purchase_response) # response: Dictionary
billing_client.acknowledge_purchase_response.connect(_on_acknowledge_purchase_response) # response: Dictionary
BillingClient.start_connection()
billing_client.start_connection()
The API must be in a connected state prior to use. The ``connected`` signal is sent
when the connection process succeeds. You can also use ``is_ready()`` to determine if the plugin
@@ -76,12 +78,12 @@ Example use of ``query_product_details()``:
::
func _on_connected():
BillingClient.query_product_details(["my_iap_item"], BillingClient.ProductType.INAPP) # BillingClient.ProductType.SUBS for subscriptions.
billing_client.query_product_details(["my_iap_item"], BillingClient.ProductType.INAPP) # BillingClient.ProductType.SUBS for subscriptions.
func _on_query_product_details_response(query_result: Dictionary):
if query_result.response_code == BillingClient.BillingResponseCode.OK:
print("Product details query success")
for available_product in query_result.result_array:
for available_product in query_result.product_details:
print(available_product)
else:
print("Product details query failed")
@@ -105,12 +107,12 @@ Example use of ``query_purchases()``:
::
func _query_purchases():
BillingClient.query_purchases(BillingClient.ProductType.INAPP) # Or BillingClient.ProductType.SUBS for subscriptions.
billing_client.query_purchases(BillingClient.ProductType.INAPP) # Or BillingClient.ProductType.SUBS for subscriptions.
func _on_query_purchases_response(query_result: Dictionary):
if query_result.response_code == BillingClient.BillingResponseCode.OK:
print("Purchase query success")
for purchase in query_result.result_array:
for purchase in query_result.purchases:
_process_purchase(purchase)
else:
print("Purchase query failed")
@@ -120,9 +122,8 @@ Example use of ``query_purchases()``:
Purchase an item
~~~~~~~~~~~~~~~~
To launch the billing flow for an item:
- Use ``purchase()`` for in-app products, passing the product ID string.
- Use ``purchase_subscription()`` for subscriptions, passing the product ID and base plan ID. You may also optionally provide an offer ID.
To launch the billing flow for an item: Use ``purchase()`` for in-app products, passing the product ID string.
Use ``purchase_subscription()`` for subscriptions, passing the product ID and base plan ID. You may also optionally provide an offer ID.
For both ``purchase()`` and ``purchase_subscription()``, you can optionally pass a boolean to indicate whether
offers are `personallised <https://developer.android.com/google/play/billing/integrate#personalized-price>`_
@@ -136,7 +137,7 @@ Example use of ``purchase()``:
::
var result = BillingClient.purchase("my_iap_item")
var result = billing_client.purchase("my_iap_item")
if result.response_code == BillingClient.BillingResponseCode.OK:
print("Billing flow launch success")
else:
@@ -151,7 +152,7 @@ The result of the purchase will be sent through the ``on_purchases_updated`` sig
func _on_purchases_updated(result: Dictionary):
if result.response_code == BillingClient.BillingResponseCode.OK:
print("Purchase update received")
for purchase in result.result_array:
for purchase in result.purchases:
_process_purchase(purchase)
else:
print("Purchase update error")
@@ -229,7 +230,7 @@ Example use of ``consume_purchase()``:
if "my_consumable_iap_item" in purchase.product_ids and purchase.purchase_state == BillingClient.PurchaseState.PURCHASED:
# Add code to store payment so we can reconcile the purchase token
# in the completion callback against the original purchase
BillingClient.consume_purchase(purchase.purchase_token)
billing_client.consume_purchase(purchase.purchase_token)
func _on_consume_purchase_response(result: Dictionary):
if result.response_code == BillingClient.BillingResponseCode.OK:
@@ -265,7 +266,7 @@ Example use of ``acknowledge_purchase()``:
not purchase.is_acknowledged:
# Add code to store payment so we can reconcile the purchase token
# in the completion callback against the original purchase
BillingClient.acknowledge_purchase(purchase.purchase_token)
billing_client.acknowledge_purchase(purchase.purchase_token)
func _on_acknowledge_purchase_response(result: Dictionary):
if result.response_code == BillingClient.BillingResponseCode.OK:
@@ -342,6 +343,6 @@ Example use of ``update_subscription``:
::
BillingClient.update_subscription(_active_subscription_purchase.purchase_token, \
billing_client.update_subscription(_active_subscription_purchase.purchase_token, \
BillingClient.ReplacementMode.WITH_TIME_PRORATION, "new_sub_product_id", "base_plan_id")
@@ -85,7 +85,7 @@ You can set text as bold, italic, underlined, colored, codeblocks etc. by embedd
[b]this text will be shown as bold[/b]
Currently they supported tags for the GDExtension documentation system are:
Currently, the supported tags for the GDExtension documentation system are:
.. list-table::
:class: wrap-normal
@@ -479,6 +479,86 @@ Currently, ``UNSAFE_*`` warnings do not cover all cases that unsafe lines cover.
Common unsafe operations and their safe counterparts
----------------------------------------------------
Global scope methods
~~~~~~~~~~~~~~~~~~~~
The following global scope methods are not statically typed, but they have
typed counterparts available. These methods return statically typed values:
+------------------------------------------------------+-------------------------------------------------------------------------------------+
| Method | Statically typed equivalents |
+======================================================+=====================================================================================+
| :ref:`abs()<class_@GlobalScope_method_abs>` | | :ref:`absf() <class_@GlobalScope_method_absf>`, |
| | :ref:`absi() <class_@GlobalScope_method_absi>` |
| | | :ref:`Vector2.abs() <class_Vector2_method_abs>`, |
| | :ref:`Vector2i.abs() <class_Vector2i_method_abs>` |
| | | :ref:`Vector3.abs() <class_Vector3_method_abs>`, |
| | :ref:`Vector3i.abs() <class_Vector3i_method_abs>` |
| | | :ref:`Vector4.abs() <class_Vector4_method_abs>`, |
| | :ref:`Vector4i.abs() <class_Vector4i_method_abs>` |
+------------------------------------------------------+-------------------------------------------------------------------------------------+
| :ref:`ceil() <class_@GlobalScope_method_ceil>` | | :ref:`ceilf() <class_@GlobalScope_method_ceilf>`, |
| | :ref:`ceili() <class_@GlobalScope_method_ceili>` |
| | | :ref:`Vector2.ceil() <class_Vector2_method_ceil>` |
| | | :ref:`Vector3.ceil() <class_Vector3_method_ceil>` |
| | | :ref:`Vector4.ceil() <class_Vector4_method_ceil>` |
+------------------------------------------------------+-------------------------------------------------------------------------------------+
| :ref:`clamp() <class_@GlobalScope_method_clamp>` | | :ref:`clampf() <class_@GlobalScope_method_clampf>`, |
| | :ref:`clampi() <class_@GlobalScope_method_clampi>` |
| | | :ref:`Vector2.clamp() <class_Vector2_method_clamp>`, |
| | :ref:`Vector2i.clamp() <class_Vector2i_method_clamp>` |
| | | :ref:`Vector3.clamp() <class_Vector3_method_clamp>`, |
| | :ref:`Vector3i.clamp() <class_Vector3i_method_clamp>` |
| | | :ref:`Vector4.clamp() <class_Vector4_method_clamp>`, |
| | :ref:`Vector4i.clamp() <class_Vector4i_method_clamp>` |
| | | :ref:`Color.clamp() <class_Color_method_clamp>` |
| | | (untyped ``clamp()`` does not work on Color) |
+------------------------------------------------------+-------------------------------------------------------------------------------------+
| :ref:`floor() <class_@GlobalScope_method_floor>` | | :ref:`floorf() <class_@GlobalScope_method_floorf>`, |
| | :ref:`floori() <class_@GlobalScope_method_floori>` |
| | | :ref:`Vector2.floor() <class_Vector2_method_floor>` |
| | | :ref:`Vector3.floor() <class_Vector3_method_floor>` |
| | | :ref:`Vector4.floor() <class_Vector4_method_floor>` |
+------------------------------------------------------+-------------------------------------------------------------------------------------+
| :ref:`lerp() <class_@GlobalScope_method_lerp>` | | :ref:`lerpf() <class_@GlobalScope_method_lerpf>` |
| | | :ref:`Vector2.lerp() <class_Vector2_method_lerp>` |
| | | :ref:`Vector3.lerp() <class_Vector3_method_lerp>` |
| | | :ref:`Vector4.lerp() <class_Vector4_method_lerp>` |
| | | :ref:`Color.lerp() <class_Color_method_lerp>` |
| | | :ref:`Quaternion.slerp() <class_Quaternion_method_slerp>` |
| | | :ref:`Basis.slerp() <class_Basis_method_slerp>` |
| | | :ref:`Transform2D.interpolate_with() <class_Transform2D_method_interpolate_with>` |
| | | :ref:`Transform3D.interpolate_with() <class_Transform3D_method_interpolate_with>` |
+------------------------------------------------------+-------------------------------------------------------------------------------------+
| :ref:`round() <class_@GlobalScope_method_round>` | | :ref:`roundf() <class_@GlobalScope_method_roundf>`, |
| | :ref:`roundi() <class_@GlobalScope_method_roundi>` |
| | | :ref:`Vector2.round() <class_Vector2_method_round>` |
| | | :ref:`Vector3.round() <class_Vector3_method_round>` |
| | | :ref:`Vector4.round() <class_Vector4_method_round>` |
+------------------------------------------------------+-------------------------------------------------------------------------------------+
| :ref:`sign() <class_@GlobalScope_method_sign>` | | :ref:`signf() <class_@GlobalScope_method_signf>` |
| | | :ref:`signi() <class_@GlobalScope_method_signi>` |
| | | :ref:`Vector2.sign() <class_Vector2_method_sign>`, |
| | :ref:`Vector2i.sign() <class_Vector2i_method_sign>` |
| | | :ref:`Vector3.sign() <class_Vector3_method_sign>`, |
| | :ref:`Vector3i.sign() <class_Vector3i_method_sign>` |
| | | :ref:`Vector4.sign() <class_Vector4_method_sign>`, |
| | :ref:`Vector4i.sign() <class_Vector4i_method_sign>` |
+------------------------------------------------------+-------------------------------------------------------------------------------------+
| :ref:`snapped() <class_@GlobalScope_method_snapped>` | | :ref:`snappedf() <class_@GlobalScope_method_snappedf>` |
| | | :ref:`snappedi() <class_@GlobalScope_method_snappedi>` |
| | | :ref:`Vector2.snapped() <class_Vector2_method_snapped>`, |
| | :ref:`Vector2i.snapped() <class_Vector2i_method_snapped>` |
| | | :ref:`Vector3.snapped() <class_Vector3_method_snapped>`, |
| | :ref:`Vector3i.snapped() <class_Vector3i_method_snapped>` |
| | | :ref:`Vector4.snapped() <class_Vector4_method_snapped>`, |
| | :ref:`Vector4i.snapped() <class_Vector4i_method_snapped>` |
+------------------------------------------------------+-------------------------------------------------------------------------------------+
When using static typing, use the typed global scope methods whenever possible.
This ensures you have safe lines and benefit from typed instructions for
better performance.
``UNSAFE_PROPERTY_ACCESS`` and ``UNSAFE_METHOD_ACCESS`` warnings
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+4
View File
@@ -225,6 +225,8 @@ Here is a minimal working example of a custom logger, with the script added as a
func _log_message(message: String, error: bool) -> void:
# Do something with `message`.
# `error` is `true` for messages printed to the standard error stream (stderr) with `print_error()`.
# Note that this method will be called from threads other than the main thread, possibly at the same
# time, so you will need to have some kind of thread-safety as part of it, like a Mutex.
pass
func _log_error(
@@ -239,6 +241,8 @@ Here is a minimal working example of a custom logger, with the script added as a
) -> void:
# Do something with the error. The error text is in `rationale`.
# See the Logger class reference for details on other parameters.
# Note that this method will be called from threads other than the main thread, possibly at the same
# time, so you will need to have some kind of thread-safety as part of it, like a Mutex.
pass
# Use `_init()` to initialize the logger as early as possible, which ensures that messages
@@ -192,7 +192,9 @@ shader, this value can be used as desired.
+----------------------------------------+--------------------------------------------------------+
| in vec3 **NODE_POSITION_VIEW** | Node position, in view space. |
+----------------------------------------+--------------------------------------------------------+
| in vec3 **CAMERA_POSITION_WORLD** | Camera position, in world space. |
| in vec3 **CAMERA_POSITION_WORLD** | Camera position, in world space. Represents the |
| | midpoint of the two eyes when in multiview/stereo |
| | rendering. |
+----------------------------------------+--------------------------------------------------------+
| in vec3 **CAMERA_DIRECTION_WORLD** | Camera direction, in world space. |
+----------------------------------------+--------------------------------------------------------+
@@ -210,8 +212,8 @@ shader, this value can be used as desired.
+----------------------------------------+--------------------------------------------------------+
| in int **VIEW_RIGHT** | Constant for right eye, always ``1``. |
+----------------------------------------+--------------------------------------------------------+
| in vec3 **EYE_OFFSET** | Position offset for the eye being rendered. |
| | Only applicable for multiview rendering. |
| in vec3 **EYE_OFFSET** | Position offset for the eye being rendered, in view |
| | space. Only applicable for multiview rendering. |
+----------------------------------------+--------------------------------------------------------+
| inout vec3 **VERTEX** | Position of the vertex, in model space. |
| | In world space if ``world_vertex_coords`` is used. |
@@ -322,7 +324,8 @@ these properties, and if you don't write to them, Godot will optimize away the c
+----------------------------------------+--------------------------------------------------------------------------------------------------+
| in vec3 **NODE_POSITION_VIEW** | Node position, in view space. |
+----------------------------------------+--------------------------------------------------------------------------------------------------+
| in vec3 **CAMERA_POSITION_WORLD** | Camera position, in world space. |
| in vec3 **CAMERA_POSITION_WORLD** | Camera position, in world space. Represents the midpoint of the two eyes when in |
| | multiview/stereo rendering. |
+----------------------------------------+--------------------------------------------------------------------------------------------------+
| in vec3 **CAMERA_DIRECTION_WORLD** | Camera direction, in world space. |
+----------------------------------------+--------------------------------------------------------------------------------------------------+
@@ -343,7 +346,8 @@ these properties, and if you don't write to them, Godot will optimize away the c
+----------------------------------------+--------------------------------------------------------------------------------------------------+
| in int **VIEW_RIGHT** | Constant for right eye, always ``1``. |
+----------------------------------------+--------------------------------------------------------------------------------------------------+
| in vec3 **EYE_OFFSET** | Position offset for the eye being rendered. Only applicable for multiview rendering. |
| in vec3 **EYE_OFFSET** | Position offset for the eye being rendered, in view space. Only applicable for multiview |
| | rendering. |
+----------------------------------------+--------------------------------------------------------------------------------------------------+
| sampler2D **SCREEN_TEXTURE** | Removed in Godot 4. Use a ``sampler2D`` with ``hint_screen_texture`` instead. |
+----------------------------------------+--------------------------------------------------------------------------------------------------+
+38
View File
@@ -377,6 +377,44 @@ the console, extra indentation should **not** be added within ``#if``,
#endif
}
Applying formatting automatically
---------------------------------
To automatically format shader files, you can use
`clang-format <https://clang.llvm.org/docs/ClangFormat.html>`__ on one or several
``.gdshader`` files, as the syntax is close enough to a C-style language.
However, the default style in clang-format doesn't follow this style guide,
so you need to save this file as ``.clang-format`` in your project's root folder:
.. code-block:: yaml
BasedOnStyle: LLVM
AlignAfterOpenBracket: DontAlign
AlignOperands: DontAlign
AlignTrailingComments:
Kind: Never
OverEmptyLines: 0
AllowAllParametersOfDeclarationOnNextLine: false
AllowShortFunctionsOnASingleLine: Inline
BreakConstructorInitializers: AfterColon
ColumnLimit: 0
ContinuationIndentWidth: 8
IndentCaseLabels: true
IndentWidth: 4
InsertBraces: true
KeepEmptyLinesAtTheStartOfBlocks: false
RemoveSemicolon: true
SpacesInLineCommentPrefix:
Minimum: 0 # We want a minimum of 1 for comments, but allow 0 for disabled code.
Maximum: -1
TabWidth: 4
UseTab: Always
While in the project root, you can then call ``clang-format -i path/to/shader.gdshader``
in a terminal to format a single shader file, or ``clang-format -i path/to/folder/*.gdshader``
to format all shaders in a folder.
Code order
----------