From 54f949bf34be454312942f921b77ec1cd5e45299 Mon Sep 17 00:00:00 2001 From: Scott DePouw Date: Tue, 16 Sep 2025 20:10:41 -0400 Subject: [PATCH 01/20] Update upgrading_to_godot_4.5.rst Fix a typo. --- tutorials/migrating/upgrading_to_godot_4.5.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/migrating/upgrading_to_godot_4.5.rst b/tutorials/migrating/upgrading_to_godot_4.5.rst index 871d6e6467b..f27e065eefb 100644 --- a/tutorials/migrating/upgrading_to_godot_4.5.rst +++ b/tutorials/migrating/upgrading_to_godot_4.5.rst @@ -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 From 67d9f09a102e0c16773147f897164a7bfeb9f606 Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Thu, 18 Sep 2025 01:15:36 +0200 Subject: [PATCH 02/20] Fix license text using syntax highlighting in Complying with licenses This is a plain text block, so it shouldn't use syntax highlighting. --- about/complying_with_licenses.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/about/complying_with_licenses.rst b/about/complying_with_licenses.rst index 0ce3a63d3b2..6ba70db555f 100644 --- a/about/complying_with_licenses.rst +++ b/about/complying_with_licenses.rst @@ -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: From 6eea82fa7db24610adc1e05f626058dcd1686f74 Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Wed, 17 Sep 2025 18:51:12 +0200 Subject: [PATCH 03/20] Mention new warnings for `ProjectSettings.add_property_info()` in Upgrading to Godot 4.5 The behavior is the same as before, but it now prints a warning whereas it previously ignored the `usage` key silently. --- tutorials/migrating/upgrading_to_godot_4.5.rst | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tutorials/migrating/upgrading_to_godot_4.5.rst b/tutorials/migrating/upgrading_to_godot_4.5.rst index f27e065eefb..f09d17af505 100644 --- a/tutorials/migrating/upgrading_to_godot_4.5.rst +++ b/tutorials/migrating/upgrading_to_godot_4.5.rst @@ -204,6 +204,17 @@ new behavior, you must change the "Naming Version" option at the bottom of the I Core ~~~~ +.. note:: + + :ref:`ProjectSettings.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() `, + :ref:`ProjectSettings.set_restart_if_changed() `, + or :ref:`ProjectSettings.set_as_internal() ` instead. + .. note:: In C#, ``StringExtensions.PathJoin`` now avoids adding an extra path separator when the original string is empty, From b7ab18ba0f8da8a90c807cfefe1e7b8bf0e6ec2c Mon Sep 17 00:00:00 2001 From: Lukas Tenbrink Date: Thu, 18 Sep 2025 16:55:03 +0200 Subject: [PATCH 04/20] Fix rendering diagram link in Internal rendering architecture (#11307) --- engine_details/architecture/internal_rendering_architecture.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engine_details/architecture/internal_rendering_architecture.rst b/engine_details/architecture/internal_rendering_architecture.rst index 98968abd98e..64404d5e55d 100644 --- a/engine_details/architecture/internal_rendering_architecture.rst +++ b/engine_details/architecture/internal_rendering_architecture.rst @@ -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 `__ +`View at full size `__ .. _doc_internal_rendering_architecture_core_shaders: From 9a7a77fef938bcbf07d96ff402f094eef6966198 Mon Sep 17 00:00:00 2001 From: peachey2k2 <100072467+peachey2k2@users.noreply.github.com> Date: Sat, 20 Sep 2025 16:40:28 +0300 Subject: [PATCH 05/20] GDExtension: Fix typo in "GDExtension documentation system" (#11310) * GDExtension: Fix typo in "GDExtension documentation system" * Apply suggestions from code review --------- Co-authored-by: Hugo Locurcio --- tutorials/scripting/cpp/gdextension_docs_system.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/scripting/cpp/gdextension_docs_system.rst b/tutorials/scripting/cpp/gdextension_docs_system.rst index 62864510080..40bf3c683f9 100644 --- a/tutorials/scripting/cpp/gdextension_docs_system.rst +++ b/tutorials/scripting/cpp/gdextension_docs_system.rst @@ -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 From 201a250a720cf267464eccd5cb9ead8653c44897 Mon Sep 17 00:00:00 2001 From: smix8 <52464204+smix8@users.noreply.github.com> Date: Fri, 19 Sep 2025 20:29:46 +0200 Subject: [PATCH 06/20] Add 4.5 upgrade Navigation notes Adds 4.5 upgrade Navigation notes. --- .../migrating/upgrading_to_godot_4.5.rst | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/tutorials/migrating/upgrading_to_godot_4.5.rst b/tutorials/migrating/upgrading_to_godot_4.5.rst index f09d17af505..07bc711a54e 100644 --- a/tutorials/migrating/upgrading_to_godot_4.5.rst +++ b/tutorials/migrating/upgrading_to_godot_4.5.rst @@ -231,6 +231,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 ~~~~~~~ From 5e28d9d2cae6debb5e4d141afa1e6c32b2b7924d Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Fri, 19 Sep 2025 17:00:32 +0200 Subject: [PATCH 07/20] Document automatic formatting with clang-format in Shaders style guide --- tutorials/shaders/shaders_style_guide.rst | 38 +++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/tutorials/shaders/shaders_style_guide.rst b/tutorials/shaders/shaders_style_guide.rst index 108954d76d2..001292b093a 100644 --- a/tutorials/shaders/shaders_style_guide.rst +++ b/tutorials/shaders/shaders_style_guide.rst @@ -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 `__ 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 ---------- From 80a830b3bb324c15143a15925878f715f738aaa8 Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Thu, 18 Sep 2025 00:43:48 +0200 Subject: [PATCH 08/20] Document global scope methods in Static typing in GDScript --- .../scripting/gdscript/static_typing.rst | 80 +++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/tutorials/scripting/gdscript/static_typing.rst b/tutorials/scripting/gdscript/static_typing.rst index a31ad9d3c9b..d76ca4eb05e 100644 --- a/tutorials/scripting/gdscript/static_typing.rst +++ b/tutorials/scripting/gdscript/static_typing.rst @@ -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()` | | :ref:`absf() `, | +| | :ref:`absi() ` | +| | | :ref:`Vector2.abs() `, | +| | :ref:`Vector2i.abs() ` | +| | | :ref:`Vector3.abs() `, | +| | :ref:`Vector3i.abs() ` | +| | | :ref:`Vector4.abs() `, | +| | :ref:`Vector4i.abs() ` | ++------------------------------------------------------+-------------------------------------------------------------------------------------+ +| :ref:`ceil() ` | | :ref:`ceilf() `, | +| | :ref:`ceili() ` | +| | | :ref:`Vector2.ceil() ` | +| | | :ref:`Vector3.ceil() ` | +| | | :ref:`Vector4.ceil() ` | ++------------------------------------------------------+-------------------------------------------------------------------------------------+ +| :ref:`clamp() ` | | :ref:`clampf() `, | +| | :ref:`clampi() ` | +| | | :ref:`Vector2.clamp() `, | +| | :ref:`Vector2i.clamp() ` | +| | | :ref:`Vector3.clamp() `, | +| | :ref:`Vector3i.clamp() ` | +| | | :ref:`Vector4.clamp() `, | +| | :ref:`Vector4i.clamp() ` | +| | | :ref:`Color.clamp() ` | +| | | (untyped ``clamp()`` does not work on Color) | ++------------------------------------------------------+-------------------------------------------------------------------------------------+ +| :ref:`floor() ` | | :ref:`floorf() `, | +| | :ref:`floori() ` | +| | | :ref:`Vector2.floor() ` | +| | | :ref:`Vector3.floor() ` | +| | | :ref:`Vector4.floor() ` | ++------------------------------------------------------+-------------------------------------------------------------------------------------+ +| :ref:`lerp() ` | | :ref:`lerpf() ` | +| | | :ref:`Vector2.lerp() ` | +| | | :ref:`Vector3.lerp() ` | +| | | :ref:`Vector4.lerp() ` | +| | | :ref:`Color.lerp() ` | +| | | :ref:`Quaternion.slerp() ` | +| | | :ref:`Basis.slerp() ` | +| | | :ref:`Transform2D.interpolate_with() ` | +| | | :ref:`Transform3D.interpolate_with() ` | ++------------------------------------------------------+-------------------------------------------------------------------------------------+ +| :ref:`round() ` | | :ref:`roundf() `, | +| | :ref:`roundi() ` | +| | | :ref:`Vector2.round() ` | +| | | :ref:`Vector3.round() ` | +| | | :ref:`Vector4.round() ` | ++------------------------------------------------------+-------------------------------------------------------------------------------------+ +| :ref:`sign() ` | | :ref:`signf() ` | +| | | :ref:`signi() ` | +| | | :ref:`Vector2.sign() `, | +| | :ref:`Vector2i.sign() ` | +| | | :ref:`Vector3.sign() `, | +| | :ref:`Vector3i.sign() ` | +| | | :ref:`Vector4.sign() `, | +| | :ref:`Vector4i.sign() ` | ++------------------------------------------------------+-------------------------------------------------------------------------------------+ +| :ref:`snapped() ` | | :ref:`snappedf() ` | +| | | :ref:`snappedi() ` | +| | | :ref:`Vector2.snapped() `, | +| | :ref:`Vector2i.snapped() ` | +| | | :ref:`Vector3.snapped() `, | +| | :ref:`Vector3i.snapped() ` | +| | | :ref:`Vector4.snapped() `, | +| | :ref:`Vector4i.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 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ From a354b6c73f763feceffae57fe3e5fcd1c785c59a Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Tue, 16 Sep 2025 16:23:15 +0200 Subject: [PATCH 09/20] Document TileMapLayer physics chunking caveats in Upgrading to Godot 4.5 --- tutorials/migrating/upgrading_to_godot_4.5.rst | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tutorials/migrating/upgrading_to_godot_4.5.rst b/tutorials/migrating/upgrading_to_godot_4.5.rst index 07bc711a54e..2fa701cdd8d 100644 --- a/tutorials/migrating/upgrading_to_godot_4.5.rst +++ b/tutorials/migrating/upgrading_to_godot_4.5.rst @@ -190,6 +190,18 @@ Behavior changes 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() ` +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 ` +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 ` +to ``1``, which disables physics chunking. + 3D Model Import ~~~~~~~~~~~~~~~ From 75e58b70ab6438aa17c63675849f56ab717e7f11 Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Tue, 16 Sep 2025 01:02:30 +0200 Subject: [PATCH 10/20] Document `Resource.duplicate(true)` behavior change in Upgrading to Godot 4.5 This also adds a missing comma in various upgrade guides. --- tutorials/migrating/upgrading_to_godot_4.1.rst | 2 +- tutorials/migrating/upgrading_to_godot_4.3.rst | 4 ++-- tutorials/migrating/upgrading_to_godot_4.5.rst | 12 +++++++++++- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/tutorials/migrating/upgrading_to_godot_4.1.rst b/tutorials/migrating/upgrading_to_godot_4.1.rst index 50052147e2f..6487aa04315 100644 --- a/tutorials/migrating/upgrading_to_godot_4.1.rst +++ b/tutorials/migrating/upgrading_to_godot_4.1.rst @@ -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 diff --git a/tutorials/migrating/upgrading_to_godot_4.3.rst b/tutorials/migrating/upgrading_to_godot_4.3.rst index 31a1419c2c2..a64a43a9594 100644 --- a/tutorials/migrating/upgrading_to_godot_4.3.rst +++ b/tutorials/migrating/upgrading_to_godot_4.3.rst @@ -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 diff --git a/tutorials/migrating/upgrading_to_godot_4.5.rst b/tutorials/migrating/upgrading_to_godot_4.5.rst index 2fa701cdd8d..c3db2f24bf4 100644 --- a/tutorials/migrating/upgrading_to_godot_4.5.rst +++ b/tutorials/migrating/upgrading_to_godot_4.5.rst @@ -188,7 +188,7 @@ 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 ~~~~~~~~~~~~ @@ -216,6 +216,16 @@ new behavior, you must change the "Naming Version" option at the bottom of the I Core ~~~~ +.. note:: + + :ref:`Resource.duplicate(true) ` (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) ` + instead to keep the old behavior. + .. note:: :ref:`ProjectSettings.add_property_info() ` From e263b576d93895b68958283e49d341431046ac0a Mon Sep 17 00:00:00 2001 From: Lukas Tenbrink Date: Mon, 22 Sep 2025 16:50:21 +0200 Subject: [PATCH 11/20] Edit "Core types" descriptions of `Pair` (mention `KeyValue`), `RBMap` (discourage its use), `Span` (make it's clear it's low level API), and `String` (clarify UTF-32 motivation). --- engine_details/architecture/core_types.rst | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/engine_details/architecture/core_types.rst b/engine_details/architecture/core_types.rst index 57db21df79a..cc843d2e9a6 100644 --- a/engine_details/architecture/core_types.rst +++ b/engine_details/architecture/core_types.rst @@ -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 `__ | -| | | 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 `__ | | | | 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 `__ | -| | | for faster access. | +| |rb_map| | ``std::map`` | Map type that uses a | +| | | `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 `__ From b79a9f0875713e458e8ebaeccd6d87c7d977288c Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Tue, 26 Aug 2025 17:16:17 +0200 Subject: [PATCH 12/20] Fix TypedArray source link in Core types - Link PackedArray to `variant.h`, as this is where its typedefs are located. --- engine_details/architecture/core_types.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/engine_details/architecture/core_types.rst b/engine_details/architecture/core_types.rst index cc843d2e9a6..f31d4da67e1 100644 --- a/engine_details/architecture/core_types.rst +++ b/engine_details/architecture/core_types.rst @@ -218,8 +218,8 @@ scripting API. .. |string_name| replace:: `StringName `__ .. |local_vector| replace:: `LocalVector `__ .. |array| replace:: `Array `__ -.. |typed_array| replace:: `TypedArray `__ -.. |packed_array| replace:: `Packed*Array `__ +.. |typed_array| replace:: `TypedArray `__ +.. |packed_array| replace:: `Packed*Array `__ .. |list| replace:: `List `__ .. |fixed_vector| replace:: `FixedVector `__ .. |span| replace:: `Span `__ @@ -228,7 +228,7 @@ scripting API. .. |a_hash_map| replace:: `AHashMap `__ .. |rb_map| replace:: `RBMap `__ .. |dictionary| replace:: `Dictionary `__ -.. |typed_dictionary| replace:: `TypedDictionary `__ +.. |typed_dictionary| replace:: `TypedDictionary `__ .. |pair| replace:: `Pair `__ Math types From 304d1070f223f220268ef3c81d36d7f25db0aa64 Mon Sep 17 00:00:00 2001 From: Ted Gignac <76577910+civilisedzombie@users.noreply.github.com> Date: Fri, 26 Sep 2025 10:56:03 -0400 Subject: [PATCH 13/20] Add details on the shader's eye position built-ins Changed descriptions for CAMERA_POSITION_WORLD and EYE_OFFSET to benefit XR developers. I decided to make this pull request because my dad spent a while trying to get the eye positions correct, eventually finding that CAMERA_POSITION_WORLD is the same for both eyes, and later that the EYE_OFFSET is not in world space. My dad and I were almost led to believe that the perspective artifacts we saw with our custom shader were due to an optimization in the headset, and that we would have to work around it in our game, but it has since been fixed. --- .../shaders/shader_reference/spatial_shader.rst | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/tutorials/shaders/shader_reference/spatial_shader.rst b/tutorials/shaders/shader_reference/spatial_shader.rst index 53e986ad0ec..b19e05a07bd 100644 --- a/tutorials/shaders/shader_reference/spatial_shader.rst +++ b/tutorials/shaders/shader_reference/spatial_shader.rst @@ -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. | +----------------------------------------+--------------------------------------------------------------------------------------------------+ From 929f80d09132661ede9f8e18aecb09af3d9ede30 Mon Sep 17 00:00:00 2001 From: PHATASS Studios Date: Fri, 26 Sep 2025 07:18:25 +0200 Subject: [PATCH 14/20] Fix inspector_dock.rst - Show inspector menu route was wrong When you follow the "Editor > Editor Settings" route an Editor Settings panel opens - without any Editor Docks sub-panel. This had me stumped at first while following the documentation. A menu path that actually triggers the Show Inspector function is: "Editor > Editor Docks > Inspector" I propose updating the menu path for clarity. --- tutorials/editor/inspector_dock.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tutorials/editor/inspector_dock.rst b/tutorials/editor/inspector_dock.rst index b0ee06ddbea..001ac43b7af 100644 --- a/tutorials/editor/inspector_dock.rst +++ b/tutorials/editor/inspector_dock.rst @@ -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` \ No newline at end of file +.. Refer to :ref:`doc_filesystem_dock` From 112652f8139331ae4509333e31e0af25826ea56c Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Sat, 27 Sep 2025 00:54:59 +0200 Subject: [PATCH 15/20] Document exporting/compiling for the iOS simulator not currently being supported Once the issue is resolved, it could support Compatibility but not Forward+/Mobile due to these renderers requiring a feature the iOS simulator doesn't support (image cube arrays). --- .../development/compiling/compiling_for_ios.rst | 8 ++++++++ tutorials/export/exporting_for_ios.rst | 9 +++++++++ 2 files changed, 17 insertions(+) diff --git a/engine_details/development/compiling/compiling_for_ios.rst b/engine_details/development/compiling/compiling_for_ios.rst index 1ad0d877f28..72c64270d6a 100644 --- a/engine_details/development/compiling/compiling_for_ios.rst +++ b/engine_details/development/compiling/compiling_for_ios.rst @@ -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 `__. + + 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 --- diff --git a/tutorials/export/exporting_for_ios.rst b/tutorials/export/exporting_for_ios.rst index 45fbbaca83e..604e454a6e2 100644 --- a/tutorials/export/exporting_for_ios.rst +++ b/tutorials/export/exporting_for_ios.rst @@ -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 `__. + + 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. From ec7ce2ecce51a7617ee000c9587fb64b3f71bcf7 Mon Sep 17 00:00:00 2001 From: Mikael Hermansson Date: Wed, 17 Sep 2025 14:22:34 +0200 Subject: [PATCH 16/20] Mention importance of thread-safety in `Logger` example --- tutorials/scripting/logging.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tutorials/scripting/logging.rst b/tutorials/scripting/logging.rst index ee6a1ecd3e6..a51cdbaee95 100644 --- a/tutorials/scripting/logging.rst +++ b/tutorials/scripting/logging.rst @@ -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 From 87b0096eb27cb74dbf88a5c05754eba3ed3482aa Mon Sep 17 00:00:00 2001 From: Lukas Tenbrink Date: Tue, 30 Sep 2025 18:31:38 +0200 Subject: [PATCH 17/20] Add redirects to `redirects.csv` after contributing content was migrated (#11315) --- _tools/redirects/redirects.csv | 112 +++++++++++++++++++++++++++------ 1 file changed, 94 insertions(+), 18 deletions(-) diff --git a/_tools/redirects/redirects.csv b/_tools/redirects/redirects.csv index 22ac665d15c..14f19a965c9 100644 --- a/_tools/redirects/redirects.csv +++ b/_tools/redirects/redirects.csv @@ -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 From 64bb53ab23fc44a303edbcb8d3c7ea62d0093a31 Mon Sep 17 00:00:00 2001 From: Anish Mishra Date: Sun, 28 Sep 2025 21:24:19 +0530 Subject: [PATCH 18/20] Update android_in_app_purchases.rst --- .../android/android_in_app_purchases.rst | 47 ++++++++++--------- 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/tutorials/platform/android/android_in_app_purchases.rst b/tutorials/platform/android/android_in_app_purchases.rst index 632bd6e29ff..dbd434088bf 100644 --- a/tutorials/platform/android/android_in_app_purchases.rst +++ b/tutorials/platform/android/android_in_app_purchases.rst @@ -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 - - BillingClient.start_connection() + 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 + + 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 `_ @@ -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") From d5a7c4282ecf4b83b2e137e217929792e0d9061c Mon Sep 17 00:00:00 2001 From: proffesionalusrnm <46546045+proffesionalusrnm@users.noreply.github.com> Date: Fri, 26 Sep 2025 18:01:40 -0600 Subject: [PATCH 19/20] Update default_key_mapping.rst Added text selection short keys for select up, down, and next occurrence --- tutorials/editor/default_key_mapping.rst | 164 ++++++++++++----------- 1 file changed, 85 insertions(+), 79 deletions(-) diff --git a/tutorials/editor/default_key_mapping.rst b/tutorials/editor/default_key_mapping.rst index 642373488ee..a9f47990b8f 100644 --- a/tutorials/editor/default_key_mapping.rst +++ b/tutorials/editor/default_key_mapping.rst @@ -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 ------------- From 8d3a6676b987832e0ee19d0f5929ec1ac20ca0b4 Mon Sep 17 00:00:00 2001 From: HolonProduction Date: Mon, 15 Sep 2025 23:03:46 +0200 Subject: [PATCH 20/20] Don't list JSONRPC changes as binary compatible --- tutorials/migrating/upgrading_to_godot_4.5.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tutorials/migrating/upgrading_to_godot_4.5.rst b/tutorials/migrating/upgrading_to_godot_4.5.rst index c3db2f24bf4..e0c4e962062 100644 --- a/tutorials/migrating/upgrading_to_godot_4.5.rst +++ b/tutorials/migrating/upgrading_to_godot_4.5.rst @@ -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`_ @@ -293,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.)`