mirror of
https://github.com/stan220/godot-docs.git
synced 2026-09-08 17:28:58 +00:00
@@ -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
|
||||
|
||||
|
@@ -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:
|
||||
|
||||
|
||||
@@ -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
|
||||
---
|
||||
|
||||
|
||||
@@ -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
|
||||
-------------
|
||||
|
||||
@@ -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`
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
|
||||
@@ -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. |
|
||||
+----------------------------------------+--------------------------------------------------------------------------------------------------+
|
||||
|
||||
@@ -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
|
||||
----------
|
||||
|
||||
|
||||
Reference in New Issue
Block a user