From b9268e8ee4feae1d23ca4aed3c0be90bb4c2e045 Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Thu, 4 May 2023 12:57:05 +0200 Subject: [PATCH 001/133] Remove outdated notices about GDScript debugger not supporting threads This is now supported in Godot. --- tutorials/performance/cpu_optimization.rst | 4 +--- tutorials/scripting/debug/debugger_panel.rst | 8 -------- tutorials/scripting/debug/overview_of_debugging_tools.rst | 6 ------ 3 files changed, 1 insertion(+), 17 deletions(-) diff --git a/tutorials/performance/cpu_optimization.rst b/tutorials/performance/cpu_optimization.rst index e19ce130c170..287906db7b77 100644 --- a/tutorials/performance/cpu_optimization.rst +++ b/tutorials/performance/cpu_optimization.rst @@ -216,9 +216,7 @@ CPU core operates independently, they can end up trying to access the same memory at the same time. One thread can be reading to a variable while another is writing: this is called a *race condition*. Before you use threads, make sure you understand the dangers and how to try and prevent these race conditions. - -Threads can also make debugging considerably more difficult. The GDScript -debugger doesn't support setting up breakpoints in threads yet. +Threads can make debugging considerably more difficult. For more information on threads, see :ref:`doc_using_multiple_threads`. diff --git a/tutorials/scripting/debug/debugger_panel.rst b/tutorials/scripting/debug/debugger_panel.rst index 0d345c76f684..b71b473314ae 100644 --- a/tutorials/scripting/debug/debugger_panel.rst +++ b/tutorials/scripting/debug/debugger_panel.rst @@ -48,14 +48,6 @@ You can use the buttons in the top-right corner to: - **Break**. This button pauses the game's execution. - **Continue**. This button resumes the game after a breakpoint or pause. - - -.. warning:: - - Breakpoints won't break on code if it's - :ref:`running in a thread `. - This is a current limitation of the GDScript debugger. - Errors ------ diff --git a/tutorials/scripting/debug/overview_of_debugging_tools.rst b/tutorials/scripting/debug/overview_of_debugging_tools.rst index cf0fc11660fd..25718412089f 100644 --- a/tutorials/scripting/debug/overview_of_debugging_tools.rst +++ b/tutorials/scripting/debug/overview_of_debugging_tools.rst @@ -111,12 +111,6 @@ When the debugger breaks on a breakpoint, a green triangle arrow is visible in the script editor's gutter. This arrow indicates the line of code the debugger broke on. -.. warning:: - - Breakpoints won't break on code if it's - :ref:`running in a thread `. - This is a current limitation of the GDScript debugger. - Debug project settings ---------------------- From 7d4f53ef287da6e9c3c1d88014353cc99b4ee468 Mon Sep 17 00:00:00 2001 From: Max Date: Sat, 3 Jun 2023 20:14:23 -0700 Subject: [PATCH 002/133] Replace references to interpolate_baked with sample_baked. It looks like this method was renamed in v4, but not fully updated in beziers_and_curves.rst. --- tutorials/math/beziers_and_curves.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tutorials/math/beziers_and_curves.rst b/tutorials/math/beziers_and_curves.rst index 7d2cf87d0eb5..3811a0c44753 100644 --- a/tutorials/math/beziers_and_curves.rst +++ b/tutorials/math/beziers_and_curves.rst @@ -262,7 +262,7 @@ Traversal at constant speed, then, can be done with the following pseudo-code: func _process(delta): t += delta - position = curve.interpolate_baked(t * curve.get_baked_length(), true) + position = curve.sample_baked(t * curve.get_baked_length(), true) .. code-tab:: csharp @@ -271,7 +271,7 @@ Traversal at constant speed, then, can be done with the following pseudo-code: public override void _Process(double delta) { _t += (float)delta; - Position = curve.InterpolateBaked(_t * curve.GetBakedLength(), true); + Position = curve.SampleBaked(_t * curve.GetBakedLength(), true); } And the output will, then, move at constant speed: From d906c0b7f4a5092ba7234c2ec8daec9d40733812 Mon Sep 17 00:00:00 2001 From: Graeme Date: Mon, 5 Jun 2023 21:16:03 +0200 Subject: [PATCH 003/133] Mark cutout_animation as outdated This tutorial no longer works in Godot 4.x after the Skeletons section. https://github.com/godotengine/godot-docs/issues/7279 https://github.com/godotengine/godot-docs/issues/6388 --- tutorials/animation/cutout_animation.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tutorials/animation/cutout_animation.rst b/tutorials/animation/cutout_animation.rst index 6d1d35e3e252..62587b03f614 100644 --- a/tutorials/animation/cutout_animation.rst +++ b/tutorials/animation/cutout_animation.rst @@ -1,3 +1,5 @@ +:article_outdated: True + .. _doc_cutout_animation: Cutout animation From 1487caec8d58c4c9911dd46f81b331df6ca299c2 Mon Sep 17 00:00:00 2001 From: Jackerty Date: Sat, 3 Jun 2023 14:30:51 +0300 Subject: [PATCH 004/133] Mentioning the GDExtension icon support A node that is loaded through GDExtension can have a custom icon. Icon's path can be added via the `gdextension` file. (See https://github.com/godotengine/godot/pull/75472). Commit makes a mention of this in the C++ tutorial. --- .../gdextension/gdextension_cpp_example.rst | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tutorials/scripting/gdextension/gdextension_cpp_example.rst b/tutorials/scripting/gdextension/gdextension_cpp_example.rst index 54ef0f55b9cb..5d90881c7a15 100644 --- a/tutorials/scripting/gdextension/gdextension_cpp_example.rst +++ b/tutorials/scripting/gdextension/gdextension_cpp_example.rst @@ -421,6 +421,22 @@ We're finally ready to run the project: .. image:: img/gdextension_cpp_animated.gif +Custom editor icon +------------------ +By default, Godot uses the node icon in the scene dock for GDExtension nodes. The custom icon can be +added via the ``gdextension`` file. The node's icon is set by reference to its name and resource path +of an SVG file. + +For example: + +.. code-block:: none + + [Icon] + GDExample = "res://icons/GDExample.svg" + +The path should point to a 16 by 16 pixel SVG image. Read the guide for :ref:`creating icons ` +for more information. + Adding properties ----------------- From cf2db6280e9590303a40caba5c42e0a1f0c086c3 Mon Sep 17 00:00:00 2001 From: smix8 <52464204+smix8@users.noreply.github.com> Date: Sat, 10 Jun 2023 16:44:01 +0200 Subject: [PATCH 005/133] Update NavigationObstacle API doc Updates NavigationObstacle API doc. --- .../navigation_using_navigationobstacles.rst | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/tutorials/navigation/navigation_using_navigationobstacles.rst b/tutorials/navigation/navigation_using_navigationobstacles.rst index 1e7e4d7049eb..f6845f9d0670 100644 --- a/tutorials/navigation/navigation_using_navigationobstacles.rst +++ b/tutorials/navigation/navigation_using_navigationobstacles.rst @@ -61,7 +61,8 @@ For static use an array of ``vertices`` is required. .. tabs:: .. code-tab:: gdscript GDScript - extends Node2D + # For 2D + # create a new "obstacle" and place it on the default navigation map. var new_obstacle_rid: RID = NavigationServer2D.obstacle_create() var default_2d_map_rid: RID = get_world_2d().get_navigation_map() @@ -76,10 +77,14 @@ For static use an array of ``vertices`` is required. var outline = PackedVector2Array([Vector2(-100, -100), Vector2(100, -100), Vector2(100, 100), Vector2(-100, 100)]) NavigationServer2D.obstacle_set_vertices(new_obstacle_rid, outline) + # Enable the obstacle. + NavigationServer2D.obstacle_set_avoidance_enabled(new_obstacle_rid, true) + .. tabs:: .. code-tab:: gdscript GDScript - extends Node3D + # For 3D + # Create a new "obstacle" and place it on the default navigation map. var new_obstacle_rid: RID = NavigationServer3D.obstacle_create() var default_3d_map_rid: RID = get_world_3d().get_navigation_map() @@ -93,3 +98,8 @@ For static use an array of ``vertices`` is required. # Use obstacle static by adding a square that pushes agents out. var outline = PackedVector3Array([Vector3(-5, 0, -5), Vector3(5, 0, -5), Vector3(5, 0, 5), Vector3(-5, 0, 5)]) NavigationServer3D.obstacle_set_vertices(new_obstacle_rid, outline) + # Set the obstacle height on the y-axis. + NavigationServer3D.obstacle_set_height(new_obstacle_rid, 1.0) + + # Enable the obstacle. + NavigationServer3D.obstacle_set_avoidance_enabled(new_obstacle_rid, true) From ca861e44fcdb3c4cd1d56fe83ccc2b80a247a27d Mon Sep 17 00:00:00 2001 From: skyace65 Date: Sun, 11 Jun 2023 17:18:34 -0400 Subject: [PATCH 006/133] Update kinematic character images --- tutorials/physics/img/kbinstance.png | Bin 14843 -> 0 bytes tutorials/physics/img/kbinstance.webp | Bin 0 -> 19610 bytes tutorials/physics/img/kbradius.png | Bin 11883 -> 0 bytes tutorials/physics/img/kbradius.webp | Bin 0 -> 25864 bytes tutorials/physics/img/kbscene.png | Bin 7950 -> 0 bytes tutorials/physics/img/kbscene.webp | Bin 0 -> 15914 bytes tutorials/physics/kinematic_character_2d.rst | 6 +++--- 7 files changed, 3 insertions(+), 3 deletions(-) delete mode 100644 tutorials/physics/img/kbinstance.png create mode 100644 tutorials/physics/img/kbinstance.webp delete mode 100644 tutorials/physics/img/kbradius.png create mode 100644 tutorials/physics/img/kbradius.webp delete mode 100644 tutorials/physics/img/kbscene.png create mode 100644 tutorials/physics/img/kbscene.webp diff --git a/tutorials/physics/img/kbinstance.png b/tutorials/physics/img/kbinstance.png deleted file mode 100644 index b965f451553f28f72e73a6236f44a4ce3bf20dbc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14843 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 diff --git a/tutorials/physics/img/kbinstance.webp b/tutorials/physics/img/kbinstance.webp new file mode 100644 index 0000000000000000000000000000000000000000..7ee31d6a34cd98da033afd052fdc8fe7affccc4f GIT binary patch literal 19610 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 VR;NgXvy><@4sM{ZxHq911^~3*x|;w1 literal 0 HcmV?d00001 diff --git a/tutorials/physics/img/kbradius.png b/tutorials/physics/img/kbradius.png deleted file mode 100644 index 720c47d9fadaf00c395bf291b5a01404b479c9ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11883 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 EZ}V4@asU7T diff --git a/tutorials/physics/img/kbradius.webp b/tutorials/physics/img/kbradius.webp new file mode 100644 index 0000000000000000000000000000000000000000..fab9194708f29bee0a164c9a216671481e5048f0 GIT binary patch literal 25864 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 diff --git a/tutorials/physics/img/kbscene.webp b/tutorials/physics/img/kbscene.webp new file mode 100644 index 0000000000000000000000000000000000000000..62c58cce41637302e363668541dbe205650cbaa1 GIT binary patch literal 15914 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 to go to the options for it, and set the radius to 30: -.. image:: img/kbradius.png +.. image:: img/kbradius.webp **Note: As mentioned before in the physics tutorial, the physics engine can't handle scale on most types of shapes (only collision polygons, @@ -103,7 +103,7 @@ above should work as a base. Finally, instance that character scene in the tilemap, and make the map scene the main one, so it runs when pressing play. -.. image:: img/kbinstance.png +.. image:: img/kbinstance.webp Moving the kinematic character ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ From 3e514494b80c8c0e7132f3d74a744971b500083e Mon Sep 17 00:00:00 2001 From: Raul Santos Date: Tue, 13 Jun 2023 11:15:54 +0200 Subject: [PATCH 007/133] C#: Replace FuncRef with Callable in outdated example --- tutorials/best_practices/scene_organization.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tutorials/best_practices/scene_organization.rst b/tutorials/best_practices/scene_organization.rst index 5cf5d367dc8c..67a42787b71d 100644 --- a/tutorials/best_practices/scene_organization.rst +++ b/tutorials/best_practices/scene_organization.rst @@ -106,10 +106,10 @@ initialize it: .. code-tab:: csharp // Parent - GetNode("Child").Set("FuncProperty", GD.FuncRef(ObjectWithMethod, "MethodOnTheObject")); + GetNode("Child").Set("FuncProperty", Callable.From(ObjectWithMethod.MethodOnTheObject)); // Child - FuncProperty.CallFunc(); // Call parent-defined method (can come from anywhere). + FuncProperty.Call(); // Call parent-defined method (can come from anywhere). 4. Initialize a Node or other Object reference. From a86f24f098192e3e40bdd569937b2eeadfcc059d Mon Sep 17 00:00:00 2001 From: Curry <72790869+CURR-E@users.noreply.github.com> Date: Wed, 14 Jun 2023 04:25:16 +1000 Subject: [PATCH 008/133] Update spatial_shader.rst Changes WORLD_NORMAL_MATRIX to MODEL_NORMAL_MATRIX --- tutorials/shaders/shader_reference/spatial_shader.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/shaders/shader_reference/spatial_shader.rst b/tutorials/shaders/shader_reference/spatial_shader.rst index 007764162dc2..995196cb01c9 100644 --- a/tutorials/shaders/shader_reference/spatial_shader.rst +++ b/tutorials/shaders/shader_reference/spatial_shader.rst @@ -217,7 +217,7 @@ shader, this value can be used as desired. +----------------------------------------+--------------------------------------------------------+ | inout mat4 **MODEL_MATRIX** | Model space to world space transform. | +----------------------------------------+--------------------------------------------------------+ -| inout mat3 **WORLD_NORMAL_MATRIX** | | +| inout mat3 **MODEL_NORMAL_MATRIX** | | +----------------------------------------+--------------------------------------------------------+ | inout mat4 **PROJECTION_MATRIX** | View space to clip space transform. | +----------------------------------------+--------------------------------------------------------+ From 7e018df8561fcdfdbb5b5e0d01a6ffa90471e764 Mon Sep 17 00:00:00 2001 From: smix8 <52464204+smix8@users.noreply.github.com> Date: Tue, 13 Jun 2023 22:35:01 +0200 Subject: [PATCH 009/133] Update NavigationAgent velocity description Update NavigationAgent velocity description. --- tutorials/navigation/navigation_using_navigationagents.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tutorials/navigation/navigation_using_navigationagents.rst b/tutorials/navigation/navigation_using_navigationagents.rst index b14a288b81c0..6044e0fce73f 100644 --- a/tutorials/navigation/navigation_using_navigationagents.rst +++ b/tutorials/navigation/navigation_using_navigationagents.rst @@ -98,9 +98,9 @@ The velocity_computed signal of the NavigationAgent node must be connected to re .. image:: img/agent_safevelocity_signal.png -In order to trigger the avoidance velocity calculation, the current velocity of the agent's parent node must be set with ``set_velocity()`` on the NavigationAgent node in ``_physics_process()``. +Use ``set_velocity()`` on the NavigationAgent node in ``_physics_process()`` to update the agent with the current velocity of the agent's parent node. -After a short wait for processing the avoidance (still in the same frame) the ``safe_velocity`` vector will be received with the signal. +While avoidance is enabled on the agent the ``safe_velocity`` vector will be received with the velocity_computed signal every physics frame. This velocity vector should be used to move the NavigationAgent's parent node in order to avoidance collision with other avoidance using agents or avoidance obstacles. .. note:: From 28ebc5a792aa8be77dd139803d47d61cae2c6c04 Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Wed, 14 Jun 2023 02:20:57 +0200 Subject: [PATCH 010/133] Document whitespace handling in BBCode in RichTextLabel --- tutorials/ui/bbcode_in_richtextlabel.rst | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tutorials/ui/bbcode_in_richtextlabel.rst b/tutorials/ui/bbcode_in_richtextlabel.rst index 9eb1f0ed1957..bbf28731f152 100644 --- a/tutorials/ui/bbcode_in_richtextlabel.rst +++ b/tutorials/ui/bbcode_in_richtextlabel.rst @@ -55,6 +55,11 @@ multiple options (separated by spaces within the opening tag). The closing tag delimits the end of the formatted part. In some cases, both the closing tag and the content can be omitted. +Unlike BBCode in HTML, leading/trailing whitespace is not removed by a +RichTextLabel upon display. Duplicate spaces are also displayed as-is in the +final output. This means that when displaying a code block in a RichTextLabel, +you don't need to use a preformatted text tag. + .. code-block:: none [tag]content[/tag] @@ -618,7 +623,6 @@ the built-in :ref:`class_Color` class. Named classes can be specified in a numbe styles using different casings: ``DARK_RED``, ``DarkRed``, and ``darkred`` will give the same exact result. - .. _doc_bbcode_in_richtextlabel_hex_colors: Hexadecimal color codes @@ -633,7 +637,6 @@ e.g. ``[color=#ffffff88]translucent white[/color]``. Note that the alpha channel is the **last** component of the color code, not the first one. Short RGBA color codes such as ``#6f28`` (equivalent to ``#66ff2288``) are supported as well. - .. _doc_bbcode_in_richtextlabel_cell_options: Cell options From c0da76caf22e1dc1d8db8b4d164c7d5ad339e5f4 Mon Sep 17 00:00:00 2001 From: atomikf <31524861+atomikf@users.noreply.github.com> Date: Wed, 14 Jun 2023 10:41:53 +0200 Subject: [PATCH 011/133] Update multiple_resolutions.rst Small typo correction. There is a line "Set the base window width to 720 and window height to 1080." It seems the 1080 should be changed to 1280. --- tutorials/rendering/multiple_resolutions.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/rendering/multiple_resolutions.rst b/tutorials/rendering/multiple_resolutions.rst index 7bf8b783c89e..563f2a37a244 100644 --- a/tutorials/rendering/multiple_resolutions.rst +++ b/tutorials/rendering/multiple_resolutions.rst @@ -363,7 +363,7 @@ to change the display orientation project setting. Mobile game in portrait mode ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -- Set the base window width to ``720`` and window height to ``1080``. +- Set the base window width to ``720`` and window height to ``1280``. - Alternatively, if you're targeting high-end devices primarily, set the base window width to ``1080`` and window height to ``1920``. This allows you to provide higher resolution 2D assets, resulting in crisper From 5351d51aed803d7eb6b6561b7a2de41a15bb44fc Mon Sep 17 00:00:00 2001 From: dani-swordfish <136572193+dani-swordfish@users.noreply.github.com> Date: Wed, 14 Jun 2023 10:00:47 +0100 Subject: [PATCH 012/133] Update tutorials.rst I removed two dead links and added two resources I found helpful when learning. A possible improvement could be to label 4.0 tutorials and remove or archive pages which have had no new content in 3-4 years. --- community/tutorials.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/community/tutorials.rst b/community/tutorials.rst index 4f7a92376df6..809998e6e401 100644 --- a/community/tutorials.rst +++ b/community/tutorials.rst @@ -38,13 +38,14 @@ Video tutorials - `TheBuffED `_ (2D, GDScript). - `Code with Tom `_ (2D and 3D, GDScript). - `BornCG `_ (2D and 3D, GDScript). -- `Gonkee `_ (2D and 3D, GDScript, Shaders). - `TheGuideKnight `_ (2D, GDScript). - `GDScript Dude `_ (GDScript). - `Garbaj `_ (3D, GDScript). - `Kasper Frandsen `_ (3D, Shaders). - `bitbrain `_ (2D, GDScript). - `Gwizz `_ (2D, GDScript). +- `Quiver `_ (2D, GDScript, Game Jams). +- `Maker Tech `_ (2D, GDScript). Text tutorials -------------- @@ -52,7 +53,6 @@ Text tutorials - `FinepointCGI website by Mitch `__ - `GDScript website by Andrew Wilkes `__ - `Godot Recipes by KidsCanCode `__ -- `Steincodes `__ Devlogs ------- From 468b12c5f893f80a38964beae68e4b0c4621b79d Mon Sep 17 00:00:00 2001 From: Jonathan Barnoud Date: Thu, 15 Jun 2023 08:00:24 +0200 Subject: [PATCH 013/133] Fix references to XR_ENV_BLEND_MODE_ALPHA_BLEND in openxr_passthrough.rst The code example at the end of the openXR passthrough tutorial refers to the `XR_ENV_BLEND_MODE_ALPHA_BLEND` constant. That constant, however, is not accessible in the scope. Instead, it is a member of the `xr_interface` object. --- tutorials/xr/openxr_passthrough.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tutorials/xr/openxr_passthrough.rst b/tutorials/xr/openxr_passthrough.rst index 48ca11196bba..d8a1510ba5ac 100644 --- a/tutorials/xr/openxr_passthrough.rst +++ b/tutorials/xr/openxr_passthrough.rst @@ -57,7 +57,7 @@ This will return a list of supported blend modes for submitting the main render We need to check if ``XR_ENV_BLEND_MODE_ALPHA_BLEND`` is present in this list. If so we can tell OpenXR to expect an image that can be alpha blended with a background. -To do this, we simply call ``set_environment_blend_mode(XR_ENV_BLEND_MODE_ALPHA_BLEND)``. +To do this, we simply call ``set_environment_blend_mode(xr_interface.XR_ENV_BLEND_MODE_ALPHA_BLEND)``. We must also set ``transparent_bg`` to true to ensure we submit the right image. @@ -74,8 +74,8 @@ Putting the above together we can use the following code as a base: return xr_interface.start_passthrough() else: var modes = xr_interface.get_supported_environment_blend_modes() - if XR_ENV_BLEND_MODE_ALPHA_BLEND in modes: - xr_interface.set_environment_blend_mode(XR_ENV_BLEND_MODE_ALPHA_BLEND) + if xr_interface.XR_ENV_BLEND_MODE_ALPHA_BLEND in modes: + xr_interface.set_environment_blend_mode(xr_interface.XR_ENV_BLEND_MODE_ALPHA_BLEND) return true else: return false From 31ac1bc64d95c642ce9a3926864356e9ef8346f5 Mon Sep 17 00:00:00 2001 From: RedworkDE <10944644+RedworkDE@users.noreply.github.com> Date: Thu, 15 Jun 2023 22:23:01 +0200 Subject: [PATCH 014/133] C#: Document new version defines and remove mentions of old defines --- .../scripting/c_sharp/c_sharp_features.rst | 39 ++++++++++++++++--- 1 file changed, 34 insertions(+), 5 deletions(-) diff --git a/tutorials/scripting/c_sharp/c_sharp_features.rst b/tutorials/scripting/c_sharp/c_sharp_features.rst index fc0aea6b97cb..26b9ab89945e 100644 --- a/tutorials/scripting/c_sharp/c_sharp_features.rst +++ b/tutorials/scripting/c_sharp/c_sharp_features.rst @@ -141,6 +141,20 @@ Or you can detect which engine your code is in, useful for making cross-engine l #endif } +Or you can write scripts that target multiple Godot versions and can take +advantage that are only available on some of those versions: + +.. code-block:: csharp + + public void UseCoolFeature() + { + #if GODOT4_3_OR_GREATER || GODOT4_2_2_OR_GREATER + // Use CoolFeature, that was added to Godot in 4.3 and cherry-picked into 4.2.2, here. + #else + // Use a workaround for the absence of CoolFeature here. + #endif + } + Full list of defines ~~~~~~~~~~~~~~~~~~~~ @@ -159,15 +173,30 @@ Full list of defines :ref:`OS ` singleton, but not every possible OS the method returns is an OS that Godot with .NET runs on. -When **exporting**, the following may also be defined depending on the export features: +* ``GODOTX``, ``GODOTX_Y``, ``GODOTX_Y_Z``, ``GODOTx_OR_GREATER``, + ``GODOTX_y_OR_GREATER``, and ``GODOTX_Y_z_OR_GREATER``, where ``X``, ``Y``, + and ``Z`` are replaced by the current major, minor and patch version of Godot. + ``x``, ``y``, and ``z`` are replaced by 0 to to the current version for that + component. -* One of ``GODOT_PC``, ``GODOT_MOBILE``, or ``GODOT_WEB`` depending on the platform type. + .. note:: + + These defines were first added in Godot 4.0.4 and 4.1. Version defines for + prior versions do not exist, regardless of the current Godot version. -* One of ``GODOT_ARM64_V8A`` or ``GODOT_ARMEABI_V7A`` on Android only depending on the architecture. + For example: Godot 4.0.5 defines ``GODOT4``, ``GODOT4_OR_GREATER``, + ``GODOT4_0``, ``GODOT4_0_OR_GREATER``, ``GODOT4_0_5``, + ``GODOT4_0_4_OR_GREATER``, and ``GODOT4_0_5_OR_GREATER``. Godot 4.3.2 defines + ``GODOT4``, ``GODOT4_OR_GREATER``, ``GODOT4_3``, ``GODOT4_0_OR_GREATER``, + ``GODOT4_1_OR_GREATER``, ``GODOT4_2_OR_GREATER``, ``GODOT4_3_OR_GREATER``, + ``GODOT4_3_2``, ``GODOT4_3_0_OR_GREATER``, ``GODOT4_3_1_OR_GREATER``, and + ``GODOT4_3_2_OR_GREATER``. -* One of ``GODOT_ARM64`` or ``GODOT_ARMV7`` on iOS only depending on the architecture. +When **exporting**, the following may also be defined depending on the export features: + +* One of ``GODOT_PC``, ``GODOT_MOBILE``, or ``GODOT_WEB`` depending on the platform type. -* Any of ``GODOT_S3TC``, ``GODOT_ETC``, and ``GODOT_ETC2`` depending on the texture compression type. +* One of ``GODOT_WINDOWS``, ``GODOT_LINUXBSD``, ``GODOT_MACOS``, ``GODOT_UWP``, ``GODOT_HAIKU``, ``GODOT_ANDROID``, ``GODOT_IOS``, or ``GODOT_WEB`` depending on the platform. To see an example project, see the OS testing demo: https://github.com/godotengine/godot-demo-projects/tree/master/misc/os_test From f050e6b715094c847e03c2708e1724fa5a2c489f Mon Sep 17 00:00:00 2001 From: Arpit Srivastava <52847458+Skyvastern@users.noreply.github.com> Date: Sat, 17 Jun 2023 17:47:14 +0530 Subject: [PATCH 015/133] Minor grammar correction in your_first_3d_shader.rst --- tutorials/shaders/your_first_shader/your_first_3d_shader.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tutorials/shaders/your_first_shader/your_first_3d_shader.rst b/tutorials/shaders/your_first_shader/your_first_3d_shader.rst index 9d1496913276..c0817a5c136a 100644 --- a/tutorials/shaders/your_first_shader/your_first_3d_shader.rst +++ b/tutorials/shaders/your_first_shader/your_first_3d_shader.rst @@ -197,7 +197,7 @@ texture as the second argument. We use the ``x`` and ``z`` channels of ``VERTEX`` to determine where on the texture to look up. Note that the PlaneMesh coordinates are within the [-1,1] range (for a size of 2), while the texture coordinates are within [0,1], so to normalize we divide by the size of the -PlaneMesh 2.0 and add 0.5. ``texture()`` returns a ``vec4`` of the ``r, g, b, +PlaneMesh by 2.0 and add 0.5. ``texture()`` returns a ``vec4`` of the ``r, g, b, a`` channels at the position. Since the noise texture is grayscale, all of the values are the same, so we can use any one of the channels as the height. In this case we'll use the ``r``, or ``x`` channel. @@ -325,7 +325,7 @@ explained in more detail in the next part of this tutorial. When we have normals that correspond to a specific vertex we set ``NORMAL``, but if you have a normalmap that comes from a texture, set the normal using -``NORMAL_MAP``. This way Godot will handle the wrapping the texture around the +``NORMAL_MAP``. This way Godot will handle the wrapping of texture around the mesh automatically. Lastly, in order to ensure that we are reading from the same places on the noise From e4acd3ccf6e9cd5cb7f8d67ed9cab1df5c2ea126 Mon Sep 17 00:00:00 2001 From: Piper Thunstrom Date: Sun, 18 Jun 2023 19:06:02 -0700 Subject: [PATCH 016/133] Update instancing.rst (#7493) Update physics material info on instancing page --- .../img/instancing_physics_material_expand.png | Bin 6672 -> 0 bytes .../img/instancing_physics_material_expand.webp | Bin 0 -> 15954 bytes .../img/instancing_property_bounce_updated.png | Bin 587 -> 0 bytes .../img/instancing_property_bounce_updated.webp | Bin 0 -> 1672 bytes getting_started/step_by_step/instancing.rst | 6 +++--- 5 files changed, 3 insertions(+), 3 deletions(-) delete mode 100644 getting_started/step_by_step/img/instancing_physics_material_expand.png create mode 100644 getting_started/step_by_step/img/instancing_physics_material_expand.webp delete mode 100644 getting_started/step_by_step/img/instancing_property_bounce_updated.png create mode 100644 getting_started/step_by_step/img/instancing_property_bounce_updated.webp diff --git a/getting_started/step_by_step/img/instancing_physics_material_expand.png b/getting_started/step_by_step/img/instancing_physics_material_expand.png deleted file mode 100644 index 67f452186ab9b52beb76ff438196a6cde654dfbb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6672 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 literal 0 HcmV?d00001 diff --git a/getting_started/step_by_step/img/instancing_property_bounce_updated.png b/getting_started/step_by_step/img/instancing_property_bounce_updated.png deleted file mode 100644 index 2b7c3117bfff60b38032942297b8e16bddf5c151..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 587 zcmV-R0<`^!P)JD4fL-vPy;nk12s?st#A)1cUdbA-UogOnuFhPUlTNyk_kvw zss*Qo_8b&_%)I%!Bxn(lo?w@S3eM-&vUlM*=-%!hH;>DLN`@*TEg?kiBEoQf3M7#n zTSBBNIuIeI-^n7AV&`==n|J)?85+X6pbSlA`N&9oaK{O2xU&*HPM>$uR+VA&rnS_B1Snwx`3)8 zrZJ$C)bH_}2XA!u@FQs3;+m&C*IF2~-MpY)%H|MrKe)8cJXy3x^ zXWeIL1^xhv|AQh`t;>w6cU3+dN;maf7qkOC`N_A-hK>RKGPA6V*K5<#`*{V`Qz?%_ zDgT~2<+7pUP#Tl7dvmdu;koQTr3CnRZQ6nAp7FAw4UtQxa}rX?iDYK4|9ajwPwA|! zddf#uw9au{?4=SS?ew^z}`|1zFQg8Kn>JD4b(sl)Ibf?Kn>J7 Zj(@Wu+}b|OzOeuR002ovPDHLkV1k|Y4J`lw diff --git a/getting_started/step_by_step/img/instancing_property_bounce_updated.webp b/getting_started/step_by_step/img/instancing_property_bounce_updated.webp new file mode 100644 index 0000000000000000000000000000000000000000..a6405bb647ca4ff75e1d703d3a53b183a4779e9b GIT binary patch literal 1672 zcmaKqc~nzJ6vi(*BCA2b9+lKapa@nA0*WOVAc{qS0J4J+WHSkvfT%1%L{th$UCI)W zT?#1Hl{FPvtYxv(P+W?HB8qGkWQh>S>jZm>e`x2NdGmYUz2D5-`yR!XOpccYaJ3;h z>~k=4Qvd)wngal90c@?T9P%a6D@f+ksC1U}CIC7kf=Ss)!n?V9;N=EE78C&oTS3c@ z$_n4(M0OTue|*ezgM>K3GZgRj@tjYpN&yF0Q~(J)%CMw{Gb0f1M{E)m5iaIT#Ol;w zzW~Hn5F0Sj1ra|H>;CU~RLnt(yjYYv)0tw0YEwr#KIjAX|A48%OghRjMmdB4Is@%5 z>Gqxj#2h1LIxQ02ZE=VzR6M|NaY8Er&DF3IY+(;Lptkx$B!mDBBES%>45YAtg5so4 z_&;0pJ0O=oa)kgDIjkWJ=-{{L2k|#RIcO~PmKA99^`a!9NCJ@Q#jwfs0CML67Sb_H zSb$**g#c1L01b>Ke^@?%*)-DAmo!2ifJ!33o#rLYKLeoZ6oA&#a6hKs;yF_2DH#|D z@U|2{$sGXK383KlzHcZdjziI70B6)IyAFV?Yyh1gw71tM>Xt`_|N8d7Isf(#{kiyB zbWW!xmDsBLaAhs_}l#Fj54V0xkq5$|}XMY`$_ z)0~3i6IsS%Bc9ZZ#6w0JW$x?sDjws#d~1)IW;UwraK2EfAZmEV>8ZQ-Za-&1Wq$IQ z?SCdRd6`H=1J7+0A;JyR_p3k|4gxzWBFIb;A4c77{cH?-V5 zH}+r=tyy=jRzp@n>Lt^=WKB!TwOIxEA;leo)d@!Z6@+oSwu^7PLa#M#FPW^`xa^z` ziT(ZK;Ga^1R{l0zUEu6`7*CX z`Bg&^I8NT%t|`&p=x9uPe7DbCEpE*=E-YjTb#h`ex0B1IJx%MI6{{F!$-(n7?RLSg zC4G*`OkQ&QqvxwxlMVTif()V{N)vO-{R{7MyM70$`qp*ay6?;ftxBYE1@-~_+l7VJ zy}Va053#kxZBsEFf`=JpyaVH=GlvE=&lpj*jKb;rC!W!tww3-&F^N7#)7zJAX`&~Y zHKIQ;LZBb+Q&t-EYWd1Fl+~j-aW%o1YUx|!ljpeEgLOp3(Bf!e;t> zxXVOZ9!(}r>=$FRXD&_=m_$2@Jt=S0HU8Gq7d;HVy%w3x|CRT}!BxY?!KahhDInp@ z^(Nj-tLT!>;bX+ij=NHoQ9Y$sH)aiRRy1k&(LK!w>-uzA)y>83R*4pJ;~w(Gtw$X( z|GBf?^M1zM7|u;vjQY1{^`#8IG!VA>hT9Kbu`}U?P1zA<+>&F5(jKJAWLan@nvS>W z)~3ITk$rc~wZMs4->NVou(^8D;#`E}hL%S6DCM=fHRo1Ol<%5MQ&UT+Tvbuf&NuAc zM8L;3Fm1-ILk_cB7D9B!x;me~lW_VYTtwgdXM9O_)bQU1%ev1zQ?X7uVNAba{A2DE zpMO$x<49dxLth!@#h;~UADbPG=1$u;sUCT!}0d?HEl3&Z+tb$pMB8G)u=p_ zrktJ9SXkerotpaM`poIeSS;1jqImz_(4BlY_g{R+le|1CSiU$OJ*?rjPH$Fg-llPF3yAoNC;icXvACo)?{+@cD)|d|AsDZ!^XVj4C%@VIco7mb@X8 Y)<5P|bD~$Rq}45 Date: Thu, 15 Jun 2023 09:59:20 +0200 Subject: [PATCH 017/133] Recommend designing lighting in the Godot editor in Importing 3D scenes This is a general recommendation that gets asked about regularly on community platforms. --- tutorials/assets_pipeline/importing_scenes.rst | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/tutorials/assets_pipeline/importing_scenes.rst b/tutorials/assets_pipeline/importing_scenes.rst index d07db08e5603..15cf8f02a37d 100644 --- a/tutorials/assets_pipeline/importing_scenes.rst +++ b/tutorials/assets_pipeline/importing_scenes.rst @@ -107,7 +107,9 @@ Importing ``.blend`` files directly within Godot .. note:: - This functionality requires Blender 3.0 or later. + This functionality requires Blender 3.0 or later. For best results, we + recommend using Blender 3.5 or later, as it includes many fixes to the glTF + exporter. From Godot 4.0 onwards, the editor can directly import ``.blend`` files by calling `Blender `__'s glTF export functionality in a @@ -230,6 +232,18 @@ object transform in the 3D modeling software before exporting the scene. that the skeleton is reset to its T-pose or default rest pose before exporting with your favorite 3D editor. +Lighting considerations +----------------------- + +While it's possible to import lights from a 3D scene using the glTF, ``.blend`` +or Collada formats, it's generally advised to design the scene's lighting in the +Godot editor after importing the scene. + +This allows you to get a more accurate feel for the final result, as different +engines will render lights in a different manner. This also avoids any issues +with lights appearing excessively strong or faint as a result of the import +process. + Import workflows ---------------- From 08a5cc497705d81b6fd0cc0bd35f95e4ebeedceb Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Fri, 16 Jun 2023 05:40:16 +0200 Subject: [PATCH 018/133] Document OS-specific web feature tags These feature tags were added in 4.1. --- tutorials/export/feature_tags.rst | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/tutorials/export/feature_tags.rst b/tutorials/export/feature_tags.rst index f7e270026a1c..ce29e203e110 100644 --- a/tutorials/export/feature_tags.rst +++ b/tutorials/export/feature_tags.rst @@ -40,17 +40,17 @@ Here is a list of most feature tags in Godot. Keep in mind they are **case-sensi +-----------------+----------------------------------------------------------+ | **Feature tag** | **Description** | +=================+==========================================================+ -| **android** | Running on Android | +| **android** | Running on Android (but not within a Web browser) | +-----------------+----------------------------------------------------------+ -| **bsd** | Running on \*BSD | +| **bsd** | Running on \*BSD (but not within a Web browser) | +-----------------+----------------------------------------------------------+ -| **linux** | Running on Linux | +| **linux** | Running on Linux (but not within a Web browser) | +-----------------+----------------------------------------------------------+ -| **macos** | Running on macOS | +| **macos** | Running on macOS (but not within a Web browser) | +-----------------+----------------------------------------------------------+ -| **ios** | Running on iOS | +| **ios** | Running on iOS (but not within a Web browser) | +-----------------+----------------------------------------------------------+ -| **uwp** | Running on UWP | +| **uwp** | Running on UWP (but not within a Web browser) | +-----------------+----------------------------------------------------------+ | **windows** | Running on Windows | +-----------------+----------------------------------------------------------+ @@ -106,6 +106,16 @@ Here is a list of most feature tags in Godot. Keep in mind they are **case-sensi +-----------------+----------------------------------------------------------+ | **web** | Host OS is a Web browser | +-----------------+----------------------------------------------------------+ +| **web_android** | Host OS is a Web browser running on Android | ++-----------------+----------------------------------------------------------+ +| **web_ios** | Host OS is a Web browser running on iOS | ++-----------------+----------------------------------------------------------+ +| **web_linuxbsd**| Host OS is a Web browser running on Linux or \*BSD | ++-----------------+----------------------------------------------------------+ +| **web_macos** | Host OS is a Web browser running on macOS | ++-----------------+----------------------------------------------------------+ +| **web_windows** | Host OS is a Web browser running on Windows | ++-----------------+----------------------------------------------------------+ | **etc** | Textures using ETC1 compression are supported | +-----------------+----------------------------------------------------------+ | **etc2** | Textures using ETC2 compression are supported | From e0227200c45095c2fe7395ab1fcc8ce2aa3f26a9 Mon Sep 17 00:00:00 2001 From: dani-swordfish <136572193+dani-swordfish@users.noreply.github.com> Date: Wed, 21 Jun 2023 01:21:43 +0100 Subject: [PATCH 019/133] Update community/tutorials.rst Co-authored-by: Matthew --- community/tutorials.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/community/tutorials.rst b/community/tutorials.rst index 809998e6e401..5409f734a808 100644 --- a/community/tutorials.rst +++ b/community/tutorials.rst @@ -44,7 +44,7 @@ Video tutorials - `Kasper Frandsen `_ (3D, Shaders). - `bitbrain `_ (2D, GDScript). - `Gwizz `_ (2D, GDScript). -- `Quiver `_ (2D, GDScript, Game Jams). +- `Quiver `_ (2D, GDScript). - `Maker Tech `_ (2D, GDScript). Text tutorials From 5c30e12f9a511e0f750626e0f6b23baaa838e41c Mon Sep 17 00:00:00 2001 From: Surya Narayan Date: Thu, 22 Jun 2023 18:44:30 -0400 Subject: [PATCH 020/133] changed collisionInfo.Normal to collisionInfo.GetNormal() --- tutorials/physics/physics_introduction.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/physics/physics_introduction.rst b/tutorials/physics/physics_introduction.rst index c3346085d9f1..d7bac887cf7d 100644 --- a/tutorials/physics/physics_introduction.rst +++ b/tutorials/physics/physics_introduction.rst @@ -414,7 +414,7 @@ Or to bounce off of the colliding object: { var collisionInfo = MoveAndCollide(_velocity * (float)delta); if (collisionInfo != null) - _velocity = _velocity.Bounce(collisionInfo.Normal); + _velocity = _velocity.Bounce(collisionInfo.GetNormal()); } } From df73737a7a8b018f2fb1dc78edb5934b581d954b Mon Sep 17 00:00:00 2001 From: skyace65 Date: Thu, 22 Jun 2023 20:01:36 -0400 Subject: [PATCH 021/133] Add compression guidelines to doc image guide --- contributing/documentation/docs_image_guidelines.rst | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/contributing/documentation/docs_image_guidelines.rst b/contributing/documentation/docs_image_guidelines.rst index 350995316573..36002f8fff89 100644 --- a/contributing/documentation/docs_image_guidelines.rst +++ b/contributing/documentation/docs_image_guidelines.rst @@ -41,7 +41,11 @@ While some Linux programs will support saving screenshots in this format, macOS and the Snip & Sketch program on Windows do not. For images that don't need editing, such as precise cropping or adding outlines, Squoosh can be used. `Squoosh `_ is a converter developed by Google, is open -source, and doesn't give Google any image rights by using it. +source, and doesn't give Google any image rights by using it. When choosing +compression if you can get an image that's under 300KB in size use lossless +compression. If it's over 300KB use just enough lossy compression to get it +under that size. If this results in noticable compression artifacts using less +compression is fine, even if the file size is bigger. If you already have an image editor such as GIMP, Krita or Photoshop installed it may have the ability to open an image then save it as a WebP file. @@ -101,6 +105,11 @@ To save an image as webp if it isn't already one, Go to **File > Save As**. Sele will popup with webp options. Make sure **Losses** is checked and **Quality** is set to 100%. This means the image will not lose detail and will be as small as possible. +If the image is over 300KB in size try compressing it losslessly using `Squoosh `_. +If it's still over 300KB change to lossy compression and slowly increase the compression until it's under +300KB. If this results in noticable compression artifacts using less compression is fine, even if the file +size is bigger. + Outlines arrows and text ------------------------ From 4415f9895cdb3f9461434ed6e69cad3368880749 Mon Sep 17 00:00:00 2001 From: Jason Date: Fri, 23 Jun 2023 09:43:41 -0400 Subject: [PATCH 022/133] Updates to visual_shaders.rst to show new way to create visual shaders --- tutorials/shaders/img/visual_shader_create.png | Bin 9799 -> 0 bytes tutorials/shaders/img/visual_shader_create.webp | Bin 0 -> 48352 bytes .../shaders/img/visual_shader_create2.webp | Bin 0 -> 38938 bytes tutorials/shaders/visual_shaders.rst | 10 +++++++--- 4 files changed, 7 insertions(+), 3 deletions(-) delete mode 100644 tutorials/shaders/img/visual_shader_create.png create mode 100644 tutorials/shaders/img/visual_shader_create.webp create mode 100644 tutorials/shaders/img/visual_shader_create2.webp diff --git a/tutorials/shaders/img/visual_shader_create.png b/tutorials/shaders/img/visual_shader_create.png deleted file mode 100644 index e36820d1291f5d66bf55d7f7004081d54e5da7a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9799 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 diff --git a/tutorials/shaders/img/visual_shader_create.webp b/tutorials/shaders/img/visual_shader_create.webp new file mode 100644 index 0000000000000000000000000000000000000000..64ed1a69c5822fef58b7e94b45e708b66a6b533f GIT binary patch literal 48352 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
J6FT`lQ)i`|hNUmuCyaS?;$LN3@Z zUh~WUfpEQ0n&SFJiQPp(LH$K3oJT)e`pw^id+RRSYN(CKq0bUFDh4~WK{~I=N4It8 zVI$z1^@wr5bY6bIBMC=uYKK^Jd^=;W0~uy$v*;~f+2*y7sFP}PRN)xWCAB5B>jrvl z?=a8KQ=r2xl(eG50L?(@zLMN}Dm9Wl3blPDNj_O}o|=v_#^KyErySr_d#uS=I%mwB zjIm)FO$ro<1tYCG^WcZ$qsM4GzCEo&8*bA$)>m72b*~lUaB-y&>)J=NHeP>&x@IE! z-#7Hi?}%aGRidYTPYVonB?6lvYG=x=$E)JprV!U{8Y+VSr|5vn2s0ta2mSA6oHI$-a^- zP-Xi{GDjJAk@Aak&2eWVY^(?P$=)$3Q-An?*^)#i%sGU_X3MgV@4nQ>_xKQJaQ`MV zZCtD0bc{wB#la5&>j7`r$k)Nyc&*tUhyLAf^!TxIx2$UN*zAad)h&OI%@|20l`Me( z7y4w@PI^6T{pJJF9otD%pR@4+K!YW0rlC`_@~R}~{>`FoDjl!>h3GIqAH4FSTqR}c zR%(cRahoN2=WWdk0V?XOjg;x>fnLi7?O+)2LUn_M%D zf4Y2kpE(aWy)?RsK$`;qbl>8luDC*_K2)j8s9}JP&V41>Ujg7B^Tn6w_s^8~{lEFm zq!T#P^jX|7gH{C3%A%F)Y0PFV9~C)7+fZzq|Oc zWSVenjV%qEHB@tRHuP^$Ch=%eNe^J=y-|@jt{L1Slj>qfiq}*M&^=KkT=diFzB|)E zN}XmRxUVF050YIhG1R`27xU5|YwSyv3OuOte7vK6`aa0jOv3Nts6I2~gez62WItL}Mw8`g32zCsGw-``fKz?cwb41R({*8g4!;YOgsVz4i2`G zSM9*=z+Rcu@4g80l^%Y&eu6V7DeC@6Yhfhf1nFju<}#jn+&5Dt3^^)el$yMPKez^! zT_6#o{T8O2-1iU>Sj~oG#_B(*ziq)z%lmNO<{qbS6RA>AK-oz46tNx6yl(nxh+%;K z3_orA>iG?D?tQ<9DRYPVv+QSn^z%OYDK7$Cj!m^ngAU3OL^gB8%pt|lY?{w1?5WXx z1l3(25#m{mm^*&yHh0^3Nj6h+cl*Y0%u@f8!Z1K@(YZ#5s*A!dmgq4I&>PH=de#0B z_~FEF^S~YU`#y8$-d@n;C%U)v2A{OGz0zr~hGmVKTeDO*bHvLR{;$QACeZ9$2lr@N z?$*S91(bJzWUI4(C#dkU+3Mp4WDg<|!;w=b(d(td0R5KL%q|N;1m{}o4XeaRb|q7X z`V0f~9YyX{`)e=2`v(0T2XOh%?EiRLYciX%C+arb=#y{ie@WeFK=tO2k0;{kY5=9( z5drmGAW`1s5e`Id^ZIpZLzjUW2q|L1V2_i9KR*c$1GMyo>?WrRKh7$Pj6FmeSLbrK zj^Ty@`cIv|WdQeIpTHFEExFK0fBDaT^{-#{;}5q6f=6a(ZWczMS+v(?4k1QFjm({% zyFemf^V&d3>3fF(S_0HziU*BH`5PR5>#siF z9W*%yoq>jfN>eR_x}Toe_7DUcdXWeW&^iFR!vScCyVKrif*Qa+X_-Aehjp1Y_^CB8 z+zUn!3LLm21Wn-CMHM8;bmYDTL*P&Hv2by1B9oy%ArNm+HwGU*eE6KUrc-MLykS|? zbDPo3MwjJy30@eIs4=U zq-$%Qb!Iw&sN~Thk8eeBs66$DQ!7%CgBMz-p+1=-*&Kx3(@2*>n5|wGv8OSMWe{^z z6j2y+=lz^TaP1wimc1VQGN53NiBcjuCYv$1a_^@L1fh_&V8;3IVFnO&%xjTWM_7Jm zxcYQ?YEL}Z!oNVs(&SSf&!1GlF*m0_;MR$ayJ7d#u~N1k;NT`1>z~Hm)5gII1YV!U z+zmku&J7e3_8c3f$bg{>LeS|lLV^XRlc17UtGA|Ud4qc2ANtga&UoQ8RhN{^(eHV( zl`L}rFc%a-`$LyHD6DW16~(KaK9?u}^7@3iC>Vfc(Gk=Hy#~Q`HZZ*LK+JN$;qw(C zTgg@vg4>+HnYWiGdJ;3F3cg4LH#Zy*b?f+-r^^#CX2uMFv4&aB7Pw4yJdN1^po4CS z5lT!L8hPIBr&nK98UnS2&4SGz^d#DSD4YYLFDua|ytP63Vo}-)xShw4y2#R(+G=z_ zc`@o+Gw@Nnn;fvp0=F)MO@o&TqTTvN9(8ns6m`sRT5E+M1}@uvL>EOcHp>F^&mZGa zsYS?CLd6v11&8|7LkL3c6kd3X0D!(2xRC__6~NrQL!iR}bC&v|n+dNb?{QN>L3BJv zuB2mH7JJ?e@`{1D1)>(fbpCudoB(98R}@)pVrezFXq=w&dj}*Vpy|D??Cj$P=Xj22 zB0?^;Nd#2fz->d}rGm=&y&|*3~ z1VL_Is)8sh-IMxwj@d#55h|i7NVM|;kq#U7&H}hr>6D6=PkT2n#AQ`5zXlCG47^G) z2WSlv2+g3vhk2qOPLnLXniz8}c~K=49#p(lp}+9N$EiOf(V@wwPzx*%g6EP#Ez-R( zFLy07j9Ij^1EnCk4+m`hve{NM*H z+$1wDLd%j$Yn?V1i~kAwF0Vz@d@)!o%~6*35-hpUF;pzPZulU;1n_-}(Lz)pORFll`Alt1&e63%6*q@N zPsd)%bnmuPs?tPMeBWA!NSTo)Gn6?6Z7jSNJXjG={gl7}I5pEk!yx(K z(3XmFVp_&TmzMBIg5^Z3GAHwxJ^@b`Ruc{%BP{oyW;<6~7FgOUb$FGu?6frEwz=?% zoZrKF>fu0dPp`6Nn6FWf=CK4F(+5AaP%KbFu}tpMGIj#G=OFC`T2aU`0Sf@Fl^!ln z&>wnph8>;TcZc2K6vR0KXCcATqSHr>XCicVqC%ZTa3vUa3mS)>VaMU}baA6ee}Mw& z2!;yjsBbNX+;ux0Q*t z^xNl7r*!t%;e z0i?XU5fqweFLoWlw)DO@P1byEC7w*}Ka~%)ic#CV6 zxPuO^IIeuS%);FtfFvrR?k8gEv^_7XAJel68jp2rAS{yr+Z*f|$+fz7f5qeSv}I?Z zCl!_@RAvUMBBV$PIxblTNyiL9$CY%B06@{Sh8;fFa+R4Yt*kfq-OwKZ0KIt-gRl&d zI8=qOthK%5%Ka0$9{_5h(s?P6POeX`0?b1_%tJrWBPz;3&vADfPSdGl!;T3LFL#D_ zPlxw{@vCdO8hYbdxemN5H?nm!Y>LC_&JKp%(B0VP;pS70JTEDTLMWt=FsQRm5ZxZx zJG?@DnCxpoa^whq&M)mP-?AtG2r4T2Vk&@xsi>RekrmfrjS_;Oh5(QsdL?w$E|T7f%ZV|p12iJfa&993l|vCepEi=n5P;_ zTmS+yx}30N&z4-dpS^A(r6&8ceu3=vLcZ)BZkfvyz-3F|NGX952KF>xKKW?b3J!woJ0yUaV(S+1a zJZI<3V3U)1-4Zl($@L5!#<7b@rnD_|X2+XPiJ$DS)8d zRp<8xmQ4Kc3d#up{_OkO0-``CrL(8BGX?2z^}PTmE+%}uY;T$EEpIQTh+{i#u6m2B zWNZG-Jt%vZ;a@_T{5?@N?%XN22k=n=QBeTCO^Jvaf$5f4G~wZddzS#y>Gl!+7tlGZ z)dxpr@lHSm983}QQIR~Vo1l)NJ8iCFo2#s}FyUu7D69Hk3Y1Xw!mSAC1M3sOlB^+!s7qJS$LuJ&Q|I~_-uOzrc>o{1 zaoh5f8WWg2m{jP(*fu7-m?F0a(r;yR?DiEnq%BsLhic z=2QR+Flwm5SX3At+$6c@+uSwO8Mqa70g#(7x^m@;aS7_~>X%G*4@tKRW8UAn@)WKU zQHm-TFm|vbPm4>Q&h5!|B^ahvGi3sSDz+<{0DzQ&Gdjwk7s|@r90OY{9IQ60P1e3x zu>lE+&e)+C0jO4Vi9L!rc~yHxZjrd0yzau~8SGMtTPUt=Y=jOkb+@ZObBVW0 z!s!N6<;K*pOAnZl8n>?8Rhb)J6^V9L8#U;34?`D(Y^JEVf*Bc5;i?B}xK-|z55a7b z^)lG7Vq=h`j#EuC0frU1;S0ws3GYIMRjO7&g)K1mxnn38?iK2~Z44KQtM1?`GuS1f z+ZSneVbwMl2(}=DT`64ie$7Q~l~cLRX~;O!ie35@yVSkJm0T;t46yR7=!VlE=L5GB}_d;+Rn8Rc*F7Fue2%aU*sXH!5zJ z)oNx7D$I%lb)V-|Ewy=>ftx5@441_KZLXR$ZbJ<<6-OC50NL}F z#~S0x9}j?o7o5TlZ~<2k9hzF#yx2(YNowXpH#eW>2JWcaA~&Tr7!Ix01sGc2U^FrZ zbt}4XW#E>mFh5o~E^u?|ZDTBhT>`pMx3ZgE)OiW!T7y~^yQuS`zjGbbHA%j0XE#$P z64{!v>)54R+~&EdCAo1U*@C*ZD=?brglu`s^XP&VU}&H0vb4zR(w;H?+o}M7fdKq>5;Fb* z`o2yZa8L@pe*8$LW$iSvHN^+rI>y8h9_~8?KvX+eY*rH%kO1IRD(aS)Uk-7TF5LR2 z!zbQ-^xcu8Lj9)VC)s_h%{n4w2e$#{D4NbK7?=B0#cGrN6ub1%-JQ!psI^i@$_#!> z<0|?ym#E;1)kuM)DLd0+cDY&HjiYnh%LapgJ>V@oUK89Y?Fv*nUIWq^w3oBOzIxHt zUnf?d41(aGTgRxAI$(hz0CXPR(GD<$MUw?cCBRTE0R!QcxW`|9^pUDY^bN`_-6w`y z!F6Pqp%ga(z~LNF$BQe4NUyPh2>Z zS?t1us_rFUyje)!#hFK8cP;()NjzOMeJNppi9=Z?>2jh$$pCPz>3STGZ+ac$R6^7tA3$`j$QH<&Augm zLk55c<0kT4@qyUMSR}c9oR}2QZ7~bPH5f+#!z^|Q=sxEjFWwmCboGnUg?^aXuKv%J z)-Du>HSBWk2pD5qg%8Gq@mHAnX!p~%FFkP6bKY{zE`-hKHR#qtL(m@@EaH|!4E6!( z2QzJ*fa+=G_4=UIas&w{a8y8^^EWTHAZs7{tv6Biu<|XO&4MUT0xuVyjVMtR{@TkW z`=T=ds$Zi#jXniD5#k{Bbk0qz{nT&iJQjwE;sa>O(?JS1q_jVT5|BP4H3jJN96i_1 z*_3|zr`1&PDEM!WKp1!jm;U6;nJWUe^0)@Q%WA@!)}Hv@w;dtVUAmqBdJH-GYw)V5 z9ktOV!vDJe#(xbIe)4PFdn-8z3c%CJmYaU~=^{zLb+FKltHbX8$%S^|5+){Ax-0=a>H@6Z(Bdc{Rp7xPaS$v`U!M`_@G;h4ncooFk{UIVziUasJ@Hz ziFa=*@O<_mHy>f``(A6k$@2+WVCE;@b=#cK1QoS`6dU z@HOy@+~>=7D6q#4_9nA$F4t25L$s*PjlZ0qu~~tfw%oL^>pLV`ZN0ed$<}8Q!F&Rg zYG-_L({2;lgfBhwDQ5oJcmNpOu5WeqBCztc%U`?Zi{9ZyOI2xH3(VfKu^`ThY5KRpZ*2>o&KH}-s-p!eJe9ljM)A5t$E^`g<0XL zJ#(Fz;DDi<=Blq8+nwRu;RyZ}&$_liwV zR(;XW&fqS8jx-g)r{B8^`UJnASDM}evkvd=$#u>I1FqQgxatc(d;0QcWN9*PCgHl} z9smg5Z7|uX{3@t=v{q-7HUQvx#JrAAzi8)h0FEmXRE{qJFz>A8ZI%qs&dGF049n#| z*$xVvv1fvmQc5+3hl+xrAOPt@Ngz;pL?XZbFrEHeWi_o}<_I9A<_LC0Py(=P2~7`G ziC2f659Q}(8P0vaEER@GQ;~tnhhPBMc0MgXn`J!r`O-8QIkPSW*-ZYW`S@PwnZh2e z5qEtZ!=lBWJ4nc(7t%NYphH4H?iU2;9bR!4V*MrI%F} zczg>0K-c6muK7Qd7&es809gq2CNh03c5|m%yd4NnlBL2BY06PAr17FCSDq$g1->!ul%4^p ziwvJZDc+R86e;3%HVO=E3W=zW&btdEPEz7@dlOl|Zg+PTT2I858ciZPT0^`R) zZ>l~4WD3*-h6Rj3fXM5RT&-q+sT%(P4BFn|l}#$YC!6)|q=H`7(W@$j15GB(Vb7z(MiWO!kV zgekUPzZW_ukg_bJe;xG}&JyR5H+8XcX%tX;FV*-%0Lluc*mX~-z?qWw3O%G->~hJB zcwm_EDK}Zh+be6HttXtd*tutewQ%0#T;+Ic9wPv$wdC}wElyNe;@n$s<(K3pK$|Vx zpnI2nideAPltpd!+*Ny=dCM1Uc&vGdl3Q}PYKx;H4^paB;BIZHuM@_$>h2q zELV&D60#=NtKloNCA$THvI6{bYLyGTFA!m;?4D=MY`bRr-DFtjC1v9Nxv!P7SMHGH zFKfN*?OsjzZouH9@BQ@5suXW1yCN#yT117c1#4CUw8{EP@nNm&wud+NJlX1uGAFLH zQ{iI3EoNnM)zf60Ok#D*4K?W2q5|unEn?!-@0-g%F(XRuJu|(+@pZMz43G=cD1gk7Js4|IAP9D zZktFqkXhu3rJqbu~gE{S)YYI2^BF|10Rf|YpgDN=;p zZaKT+o$Pu`Tgq;?8sGh%<&jmo3qDcocI#nW?iNa&5f|f(zT}i@_j@x@2xbvSKLrhH zq|S(wpF>1~sSHjW>!Fm4BpCw|w`z*!?bLcY8Yiyl(mK_fSoJ*Sqkc?Vc|9 zVs+}4cl{WAJG8y5*8{@yur)9sgdp{7i_CKI!j&-SU4tv2M9% zoDl!LobvGy}?;i4U(^ZX^EtW`iv8-m~>GbNu&L+v2_Z;T`ed4$2a+5N+f@ zn&=&Shr!696KG-W8_B^5SQs%Pubcpn5!Lhb#~95wvtnS)M-6mwOBSFa?)?>ni#&EuF93Ve>tGCC?&k zu5O5K-C%f5A8vhp$;HGhw7T(M|TXrp3cbWFf+$0u_N9e^L<(#F`l)jQx zrc>g|#OP&}nKk8RZ@*qk<9%PQ%oc<3)Kb?{X>*4Fdew`8ei*MTPSA_#7Mi1e^qq8x zXxH5(H!clFgj0 z{83^16aWC{e1{c|enyF!SKon(6nDJx;koEa;b0~^xFycwvi{K@X$YWAfw*r|OsP}= z=ZI2o&AJxHIPih6`lH{G1n$f|6q{z{(Gt?;OTIqUqR5+aM`5I+Du-y6-<2L6or%x= zWKJHZD98ne$gvI^1_0?%5QR&oVpZelcN{I}-xbSz@(QpS)%)XSxFaWpL287yhs?Ij z5oxBNJ=t}7=V%`QynCiBRZ~oXKx`WKVWO13xM@un5RS^RdWK&s=h_8OraIuahi?-S zR#?7sjdhbKj-`=p3T3{Z;3*)Ja@U>v&d!e;!*>cn+&u1iZP-R6m@^k%i(Csk-xgSj zl|m?P_`g$zZQCkQzqV|$onxF`Q&+H6};1yqRoMHCKKsak)tEdt(Ho9-M-_wm>D`&a-_FW%*Q?II= zd{y0QO<_EvTMT(|vxI4>Mo?Mlp;JY~`rA5Yg!{B?-Qa;a-r2PR8r=4_8Adv-U!H8u z(mwg-SbSM+kgzD`tbDRr4P(aHX=0;$YgZYivFbxTBl4ulwa>~HS!1PJm%^O_08-EX z{T&`~t33Qzg#(at9(TA;xw&C$)0NCIbl!T`-#rz6^uALdn3B_sHHbqw8|VX}xPfVv zz1Rr=xt81CTV@)(Hd#|d!1VHEXJ?}1t0(IeDzqdq<19u+rpoJfQ*~F>9Te zJ5~wfoUHUfFxH7G9O(lTnVhz}uNx1cz!yu^YpfMch6x0-K1p1vGV^7myQ^?5RER!Mtk#2d^0$J~Zzzkpi&A6o5yqc6F17x?Ecb0Q0Q`aj_5W9-zhc zIrF;Qtdxc7GXk;fdrpDyTq`zxAjk9zED{P&gLIyEy%2&zCA=**>kq&whivfL&&{&> z;uMi!06pSnO1MsYsq7_+dn&_y+wXZ91y`kI7I6aE!QjRMzFsa^v>r5AU{*LntkN0h4EpQlKKK4`i` z{NOLNn*wl`9g(-JHlG5JxZ%}1-0E@dcp(xD0Eovuow7aOsV*tqim3Vr3IMeOcG(OB zNZfa4s%z7^BDqne`%2h4$2*%(RkduDJnSU^-Yf;S4zqrFQf~_5dDg(7zQ+fWAG2ao zysgCS+PBu&-1>dHgoJQ33;^gj#dYeAgOza62)KpY3giV;OC-FrAq!6d&iqbf8_={$ z$Z#zH+LHv->9aNq0H}_gZY58k7K|c-ap%AfQfU;B^lG7$03m2zC3GP)oB}}St9b5+ z1z^&8sjX7#nJ4w8FrKm5#1|?&z3vBqo+o#iDr>19 zeD;Dlj{(yc-1naH?;HrwHMNkUUBPJ<;2jgy35T3(K=`WX=49E55?VthxBV1=0Knbu zRfr%ZrLQSQ3J^%Ml%MUn`c6|Vs=+8D7WZ_Z&AKlD0E?a}0Rmx`psnykSp%S{0=ZGA z-Sp>Hx!sgWIChXNr?o?o#0L*d9ESnZtkjZr&?iqqO<^>n2@M7zOr_udndtz~c~w<& z3Z7WJ-T-N*H*Wz5JE}>_v)=BZV_!vk(td8UO|NN)l$$HTi_kk{TqofOh@4eGQvvu} zJ^mUQAQX62m0(m5i~Ai@fhQp&d?TI`5n+ikfnvE)pQ=|M%!Xe{HHCU7cb?V_B`sT3 zl26M3(njG~wo>%UlR#4#(HGl5-y;D%A#pq2`+;%l#1vaG-u-rc^6X)|#+!hew@L_^ zf(K=|iiDtmS>C2?H9#gj2Bkmz+1{cOi~$r+5KppgJ%}kXn0kZd#!bs{Rurmya_JB3 ztO~T`pE1=6Qym>Yxnt-Tp+Hj@(ML|FPK*Yv=2y)(^_{xUzEgmi>&sa5J&gcx2@<*` zq@R_MG63jIcmoE&e|2R<1;C$PQ@Tu5f-wNoR%%K|h+#1GhRn@`@r4idi*K9uJxV`v zwwf}2^$n)3RIYE*D?*W`Frtr~MxtZ(tc3F~5Fp169oLrvkS(M%s8AGAoZ})1^%1td ztuze5s|(a`moRRH1{4W~M9{3FeD?2!H}+CiuNMZ*&9u19txWyaPEepSKju0udw6BG zDV3;Sgd$C0JmZvBC$$-jL*#4ApPOvuVY(0@avuDgRU)T6q;y21CHHWHlVms+pv>xj zt%Q-g&Q6*$uGzSMH9&kftN>h7exc90R}~3{Cqjm4;}B$uxb$y#gdoc5^}?XJnH0Cb zmC3)KZc`<#e@Lk^>68{H`wsd=DBKhrI=SW!<9DlFo5gA{7Fp8EZnj>uMC5>1l+=Yb zmvf&$goZmj<0iOQB=Y2ij+51h^(g?{H&?y&(|5ji#rJ&_8kC9^x-w;Jmrd_UK3(^= zU43UbT;2CJLZXWvU7{1Cx2TaIMi9}~H=~VSq78!4 z{YT#C_vQU^uIsF|_qx|^=fm3fbsx_a4KbO=Oq{tFOU#oYe`zbwhA)D-1d64K9fW1| zxYLV5vm8jbJSRJ!cDnQF9&kR_nIh5*AArRzx9ENL&|WI_Y}xG3S`A0(B-c+hCOfFf z_Y)YC_^5EtQrXL0O_wz<&YUebN9z=zEnahmEdLC^a%i_<*j`Gq9}Z}KNL>ulys8F$ z(}NUqw2A2Z4}vrZHPrO6kXQFaRH9}o%`T4*GUenZ8B@F`N<%#iPG!sG4%S9c#|jZ7 zrDdpOkX}z|quuru;xO0QJ=59{@IAANtkyi&^!?vpSGVS$#T?h$FDye0!F5&V)}^AX z;blJlf-jx=qE$w19b3bP<)k(T%FS92eC@)I1S764*CtHh0Y_cBD14=?Cjz6EKRHM- z(oTbox?1U`+Umq%@q6N)AxCdRx5)nnBCNpkuci6DQ#^*Ab)QO&Xcet_Nd0|grv6K4 zy^(B%epqWAHCSkdk-`!?7ae*UT43iye&Kg-@%RO8ECV828-E<;dM_Z}TyW?os#2?{ zD3hiowT1>LR@ z1QF>2+`kT-t5C|uNP;|hs{^V3J}AfKot2PZLx5iyB`=~6+N07u5vatPiLFosqd!8hZbr&4RX-Caip zoHC;1oXsfF%o5bJ3Wy@1m9%XRyMxgs@K6pksyhnRS5|(w3?8aXO%LO2+^#L?lZUBx z$A30Ntj(O2Le^Cek>DZlJF#BR_k9$%{`KrD9nKyNJjkr&!zCh(n0qVj&eqb;ke5BF z$(GT#a&?9)tz-O$%e3<1a#wD&^kTif0*KYF_=;37lt7nt4BGUg!2|L|_14>yj@j=W zw?F$?=)2Kgfw%qYn77rUFZVR}n1oqSwYb&UpBCr!fw-PjvBdZ+&!#W@lD=53dd}-y z&@b))O&1?j`TPEaw$$Rf4bC>3ftC^aKuhRZY6q@|Ax7+3=e;UNKV6^t`i9yGe5AZR zU|&F(reezM_VRDBsbyhj6Pcu2!5=B%#ht$K5+yuM9&Y2yTH{3c(zt!cM$Xs(rSZ34-K^EbxOH=1)31np*8ClD6_M zH36#e$rHJ|k-6B6uEFBNj9Wyb!=Q@TYk7wC6*m)sM;*b6iu9*qv@*{*QNcu{iAT6F9be9T-ocxsYBe7VHO2}H z5R&gW`k1cQPOgo>or+LP4CcxcK`xw9sNMCnt<16@U|y#T2Ia#3%ttqwJ^cpAhtG!FS2#0 zeLq1Eb(CV}9fP%$u;+a8TYXwgF*wo_#?2jjK(dpN<%*$ALuWzb(=EDT<3-Y#c5w3>!Ak(^OeBj$N;r98vH_Oq zidf@R?7{=N#Cvap5v<2>X{oA%AE|KWW6MqZ`eBdnm>k70IU4@UaVrnhGv&*BYRZ7r z6J$@;<@QfbU_q)*J^Z+T!{YWj(I~>qA(OD9{q|xuX=s{+`Jh;I{Ezii`U zpzE$^?O3~ja60(hwQ-W3PF%$qS9`q!t@X0*P;P(4Xwu!Q+`WYy(yumBM2rPwEai#1 zKo5cr+nKync57dfqJA;s<>OJcx0M^&z`LQXKW03@d2ew|+KGNuiChW+v6f1`BbH7Y z4Xs76zp;Bc?%6A4w>oRIfX|{9-MT%ITe4P*wFA-fkgID}b5Ou6SFcyzQqe zmM8(o&OyJj(x~}!Yf!)mRSn>_g!}8hy@Ox{*gN5yrfb}p3vIP&-Wj$qyuTKckm}8h z4j+|Sp3xR8NsZIE7xgQY+sm7_b`)S21ri7gW}d~nn}MQjU4Z8OZ@WOIN#a4d2a*-$ z-+8HXTID%+d_oOyw;Vw?&yE`b0^tDzVt`HDEbNgc%l?!=Ldwdvwg3fi+w>vjo3{1D zN=0XYXUzvzrGcT=PhlQfYP&u>R8+hh+p@FwJ(F-8`&`uO;S)UGGF*sZqirry}e(fXdoxB2^{ZnEA_6b6D+#J`qF zdYaV?X15X}%P4%jJLz^wP9?y?a}UU}f- zx;BeSqiAQmzgLoQAfHVhXn~>?d$?(bOVqERco(f@5mv|GQM%D1%WFjibSQnM>$xwt zzU$M>yfhCQgG=HkF3$>fQL?GW`&#bo=i~?){b60-&38!MSz#+@az(! zVOT1%d|ps2n%SwRwJ{lv5+%l-?N%ry*9eJ)5B;b*ZK&HLma5}2@8Gnu5)*;^?AE}E z3pC(5C`b3{cy*lV&QbWU&xxkZe!57jvR81(EwIa|;;rW_B^Jwdyq|6&NeA4qOnw1J zI28M7!;Wp#_4&d55C|A<=FwORJ4|2UTAWd{*Fl6Vzoxm}c-7CPt53RYD20I$sQjI$ zWcC4sd^i)uFv%~UXfmulQ-IUCzqYt`zgjVnzK2Vb*^J~}9tZ(#4W2pOa@_%NOFxWz zp7@6d5w}dxKaI26<(TTDTS(+W_Bv*6KGWLAo$F;h*!#xxQMY7tJSJ#0vn4#6ZxLsl z&(*Q+HHiyJP>GP|d^WkJfAY=UxoG3daE#|{-Vd%r1CJ`hBs37Jtai1M6yzd5t~nzO zNUTB3)H_F8??K3=87cQC4Y6tT>);`K`}&r zqWkrLTbm=DZVk}0Y4n%DQq;ZFk_5OX@Uuk124Br5koewADrTfNz zx$pTj-~Z#u=+7f@8*p4RT2&n8NnO7;wmdC+?-aRJFSj~g9YCqTB`SCLBlY&YJNWkk zD&d#bXR60LM_CK?WB%nb?kC2rYmo9ck>M|NTut+%{K{QSo7-k%!eqr=Nm_MFOi2n( zXo&!S`@Q@OA)R^;_KajPYy4pu1at5e{Q({czLuRjguwUku@Ej7&zMWYGTqP-hRe(H zd0X=!sd2k#2>AT-&VW?W*Q1pXNz~jVeuzPuguBP~Azl;YMK(qnRbm28g->V1_V9_% zd;)1S%`8VMLKm3=%rLZxsXHKz%y5iY$>5;5W|L*8dNPNFWA%ICjX|t!K15vimF7*SCRlS1V^Xi{h7; zDBr6*LBDu3y2GhO%dokv;}$&R@+d9h<_69$0oY0X=NS9XAq1ekxHN0_OAzt~-vwsK z01sVa4D;3wrt^!pkoAz*!HIu8#sBO1zmP(78SvvfjHw@O`F9xned}re4F8KAHwan3 zzQz=qb*A}Im|C7KI| z95wvw3H$#-zE<84`-dS0sNTB6h;cdR_-FWE?1DNc?|&mp`F|s0jBs(eYxxi0Us~fg zquPF=w&Y}H%`$srn6neTfJ69qq(|lJz0N|vjl71PRIaUQFK2fOj41LvGs-`o&w1}I zLPTAO@r|Bu8+stp>i{!V%)D(*Ehm>2rjR_dWos-+wOCasYm(LxBItpQD?0$e>5)`> zw1mAu)SLeX$zkH)mjN9~6)qWwYcCOlw=GY^T)4 zIex1Cr<6&X7Rwy0=a^YrG*tiDA+24P04;;A?`pCqAf+1+{gyr9I2YzKw)oz)|M_?I zicMSF?o2&xtFLG9M1ni2*aS%w6egC--1Cq&>>lhFmB&QSqiYMTi)PL+J_NhH!bz09 z6wSP&&g&`z7aO9a()Yed_1uToqLz<`UJ^H z1lVm-*dUb)3_e>qfvU`yJ=#P7GEfcF1=8i{3s`O%gL@nLC`XsdSh}dK( zu1ULFzj)4<{{X%iXtLrz^z-xuYA}7~BNOfx%;lXd2+f`l3mFqU5j-#KF<4~<8dxZj zwk|b{%)qj@W!MaX6agC$5mIG;*yJ-Qc;@6Mpqo-3HteL+Qh3Ppp;+2scTGv|iC^;ZP>cCoR?U?Q0kFA7f@_XZV~VGE#l0toqC$ zX7A{$iWWk`PrhygM`2o2i|}@*tomw~c=M+DkzZ2vO{FEF09ER7HB3+b7rTQ5j(L^* z>j*47KVT5Fs!4mWmr0+!gz-z@aMNGgbKBH`mJwPuNul$6^Z#P!*e&18xs`MjJ${kR3#PTbwJXI%3&hy5B?lC2$nrmI&u7vbwQB zIk$wQ7qZEH*jP;X*h*e(2{k=0V`L==37oUBMjyYMsx#vj+Rm-kn>A5XccYhydPE-u z3>|NtQh7`_=`sf8jvN;6WtReAe(F`IV)r8YH?(xAdelWf=pQu&f02rlTPRQZQh|Hf zGh-L8c0=)1o^#KnfqTdd#rq^h{ns9=(|O7?dYzv6aoCO?mnH;r{JE~sy!;{1yF5+G z64xRGKMP}ZLtUJsq}hEuA08LSBpQEL&covxXzS zt>m3J>lCLSbAfJ2Ba#|bIqwJ^u3VK;?hDkcB^3{3aLe_rXqrB+5Uac@GjS>XQ55Cc z#UCS|mwm82l%sMK_0i2AhdNB?q_=17X^l+$NkIUwh=?^#`MLy-435@~$h;6*U25c9 z+{tWPX}1?=Zqp^tFdfH$#*W~2tG_3!Tso3EQ(2{)XM>X#_<%o)I@crgNz6WtK$A1> zQgxW^@1DnG14-*%%T?9eRVh2+>bpt+evr3CH`PX2>rX}g<@d%qSwqCC6qzYCvDBG; zR0W$3kWhLN&p3Qti#*|dWWs1Cu^^a`vY|5Yna1gWRW62iLQS+T^{y70=>Mi#-3&Lp%A>Kd>kd=bQ@i7 z-2|$?-p|Y6{3>-p7G1;*v;4Bq0>#5co&MaY2>IbZt;Sul=sC-8{bGjt3~F53i`eRE zlp!A9Y8yR@PWt3oYUiVdm#b{!5myolrw_`h^DPtC&#H*O(vq3>@t*7FJ6+QY+vMXl zxhHh0*9z}BxOQ9Ed-=2(W?F&OJZeS!G`|!tzWlb!*6_d z1VyVlTS0Y8@F;hbSW&3ZvKX?JCUJ_q)S6_qH4rb`I%=4G(^f{}y(sNF<0R!sRBpFe z7npt|P6Kq7!JZbm$;snz)}o^p8LE0EuF-ni-CiUen(}_N1y+*l^>HJleS|aD_uc5o zrU8=DP9t_Rpq$73RS^2+LH*%e_QiDC_xWc~4mk$>^|~PlsK^-UmM_bE+5E?sD|_=; zh5kZihcwM`jb8f;;k8XNLyr0`>Rd2;y9dy#Z_@4fu_vAEtCOH9X$>NZcq@SyAT?#{ z0!(XY=s14e>XvQpm;M@v7wNsp^y`~3sXyvb_BfA*zvkJjzvO@#$UH3lFHS-4`s0{h zD8eS`7r$wVxO4Vaa(cMbhxkUW`Glu3JC6@X(BJ5kpNH%;F>B&YL{)v6bP?`Umo;A8 zhV)3R`W=*rC(-z7Ce>JsCu=XHX?mvb2L2gb%go;qxumm~5ia;C||K7sE5 literal 0 HcmV?d00001 diff --git a/tutorials/shaders/visual_shaders.rst b/tutorials/shaders/visual_shaders.rst index 798c5cc4b5f6..9ee39ced79a3 100644 --- a/tutorials/shaders/visual_shaders.rst +++ b/tutorials/shaders/visual_shaders.rst @@ -26,10 +26,14 @@ VisualShaders, create a new ``ShaderMaterial`` in an object of your choice. Then assign a :ref:`class_VisualShader` resource to the ``Shader`` property. -.. image:: img/visual_shader_create.png +.. image:: img/visual_shader_create.webp -Click on the new ``VisualShader`` resource and the Visual Shader Editor will -open automatically. The layout of the Visual Shader Editor comprises two parts: +Click on the new ``Shader`` resource and the Create Shader dialog will +open automatically. Change the Type option to VisualShader in the dropdown. + +.. image:: img/visual_shader_create2.webp + +The layout of the Visual Shader Editor comprises two parts: the upper toolbar and the graph itself. .. image:: img/visual_shader_editor2.png From 1e411aa12521ab0eb34aa62a32d5eafab4b91849 Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Fri, 23 Jun 2023 23:10:28 +0200 Subject: [PATCH 023/133] Document C# currently not being supported on Android, iOS and Web --- about/faq.rst | 14 ++++++++------ about/list_of_features.rst | 3 ++- .../step_by_step/scripting_languages.rst | 8 +++++++- tutorials/export/exporting_for_android.rst | 5 +++++ tutorials/export/exporting_for_ios.rst | 5 +++++ tutorials/export/exporting_for_web.rst | 5 +++++ tutorials/scripting/c_sharp/c_sharp_basics.rst | 16 +++++++++++----- 7 files changed, 43 insertions(+), 13 deletions(-) diff --git a/about/faq.rst b/about/faq.rst index a37fbc913926..a2fb7300a373 100644 --- a/about/faq.rst +++ b/about/faq.rst @@ -81,12 +81,14 @@ the long run, for prototyping, developing Minimum Viable Products (MVPs), and focusing on Time-To-Market (TTM), GDScript will provide a fast, friendly, and capable way of developing your games. -Note that C# support is still relatively new, and as such, you may encounter some -issues along the way. Our friendly and hard-working development community is always -ready to tackle new problems as they arise, but since this is an open source project, -we recommend that you first do some due diligence yourself. Searching through -discussions on `open issues `_ is a -great way to start your troubleshooting. +Note that C# support is still relatively new, and as such, you may encounter +some issues along the way. C# support is also currently missing on Android, iOS +and web platforms. Our friendly and hard-working development community is always +ready to tackle new problems as they arise, but since this is an open source +project, we recommend that you first do some due diligence yourself. Searching +through discussions on +`open issues `__ +is a great way to start your troubleshooting. As for new languages, support is possible via third parties with GDExtensions. (See the question about plugins below). Work is currently underway, for example, on unofficial bindings for Godot diff --git a/about/list_of_features.rst b/about/list_of_features.rst index 07dd54b332fd..653b3e0997a4 100644 --- a/about/list_of_features.rst +++ b/about/list_of_features.rst @@ -433,7 +433,8 @@ Scripting - Full support for the C# 10.0 syntax and features. -- Supports Windows, Linux and macOS. +- Supports Windows, Linux and macOS. Mobile/web platforms are currently + unsupported. To use C# on mobile/web platforms, use Godot 3 instead. - Using an external editor is recommended to benefit from IDE functionality. **GDExtension (C, C++, Rust, D, ...):** diff --git a/getting_started/step_by_step/scripting_languages.rst b/getting_started/step_by_step/scripting_languages.rst index b3f78359abb0..4dad51f8219a 100644 --- a/getting_started/step_by_step/scripting_languages.rst +++ b/getting_started/step_by_step/scripting_languages.rst @@ -103,7 +103,7 @@ languages, including Squirrel, Lua, and Python. As Microsoft's `C# `_ is a favorite amongst game developers, we officially support it. C# is a mature and flexible -language with tons of libraries written for it. We could add support for it +language with tons of libraries written for it. We were able to add support for it thanks to a generous donation from Microsoft. .. image:: img/scripting_csharp.png @@ -126,6 +126,12 @@ officially supported .NET option. in GDScript, C#, or C++ won't have a significant impact on performance. +.. attention:: + + Projects written in C# using Godot 4.x currently cannot be exported to + Android, iOS and web platforms. To use C# on those platforms, use Godot 3 + instead. + C++ via GDExtension ~~~~~~~~~~~~~~~~~~~ diff --git a/tutorials/export/exporting_for_android.rst b/tutorials/export/exporting_for_android.rst index 75799fe48233..82dfe2342450 100644 --- a/tutorials/export/exporting_for_android.rst +++ b/tutorials/export/exporting_for_android.rst @@ -13,6 +13,11 @@ Exporting for Android Exporting for Android has fewer requirements than compiling Godot for Android. The following steps detail what is needed to set up the Android SDK and the engine. +.. attention:: + + Projects written in C# using Godot 4 currently cannot be exported to Android. + To use C# on Android, use Godot 3 instead. + Install OpenJDK 11 ------------------ diff --git a/tutorials/export/exporting_for_ios.rst b/tutorials/export/exporting_for_ios.rst index e6c9b0dc0774..e2c7f2fb08ea 100644 --- a/tutorials/export/exporting_for_ios.rst +++ b/tutorials/export/exporting_for_ios.rst @@ -13,6 +13,11 @@ These are the steps to load a Godot project in Xcode. This allows you to build and deploy to an iOS device, build a release for the App Store, and do everything else you can normally do with Xcode. +.. attention:: + + Projects written in C# using Godot 4 currently cannot be exported to iOS. + To use C# on iOS, use Godot 3 instead. + Requirements ------------ diff --git a/tutorials/export/exporting_for_web.rst b/tutorials/export/exporting_for_web.rst index 4653fa4bd290..84cb8406b062 100644 --- a/tutorials/export/exporting_for_web.rst +++ b/tutorials/export/exporting_for_web.rst @@ -15,6 +15,11 @@ This requires support for `WebAssembly `SharedArrayBuffer `_ in the user's browser. +.. attention:: + + Projects written in C# using Godot 4 currently cannot be exported to the + web. To use C# on web platforms, use Godot 3 instead. + .. important:: Use the browser-integrated developer console, usually opened with :kbd:`F12`, to view **debug information** like JavaScript, engine, and WebGL errors. diff --git a/tutorials/scripting/c_sharp/c_sharp_basics.rst b/tutorials/scripting/c_sharp/c_sharp_basics.rst index aa897b3db0c5..779c49a70a31 100644 --- a/tutorials/scripting/c_sharp/c_sharp_basics.rst +++ b/tutorials/scripting/c_sharp/c_sharp_basics.rst @@ -27,6 +27,12 @@ step-by-step tutorial. C# is a high-level programming language developed by Microsoft. In Godot, it is implemented with .NET 6.0. +.. attention:: + + Projects written in C# using Godot 4.x currently cannot be exported to + Android, iOS and web platforms. To use C# on those platforms, use Godot 3 + instead. + .. note:: This is **not** a full-scale tutorial on the C# language as a whole. @@ -114,16 +120,16 @@ In Visual Studio Code: If you are using Linux you need to install the `Mono SDK `__ for the C# tools plugin to work. -To configure a project for debugging, you need a ``tasks.json`` and ``launch.json`` file in -the ``.vscode`` folder with the necessary configuration. An example configuration can be -found `here `__ . -In the ``tasks.json`` file, make sure the ``program`` parameter points to your Godot executable, either by +To configure a project for debugging, you need a ``tasks.json`` and ``launch.json`` file in +the ``.vscode`` folder with the necessary configuration. An example configuration can be +found `here `__ . +In the ``tasks.json`` file, make sure the ``program`` parameter points to your Godot executable, either by changing it to the path of the executable or by defining a ``GODOT4`` environment variable that points to the executable. Now, when you start the debugger in Visual Studio Code, your Godot project will run. .. note:: - There is also a `C# Tools for Godot `__ + There is also a `C# Tools for Godot `__ Visual Studio Code extension, that is meant to make this setup easier and to provide further useful tools. But it is not yet updated to work with Godot 4. From 81c997bf15eb7fce77d2cc0a3a0eb39ff3605198 Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Sat, 24 Jun 2023 00:36:30 +0200 Subject: [PATCH 024/133] Document `bullet` parameter for `ul` tag in BBCode in RichTextLabel This also adds `[shy]` (soft hyphen) to the list of control character tags and clarifies which tags are self-closing. --- tutorials/ui/bbcode_in_richtextlabel.rst | 41 +++++++++++++++++++----- 1 file changed, 33 insertions(+), 8 deletions(-) diff --git a/tutorials/ui/bbcode_in_richtextlabel.rst b/tutorials/ui/bbcode_in_richtextlabel.rst index 9eb1f0ed1957..e758f88df9bd 100644 --- a/tutorials/ui/bbcode_in_richtextlabel.rst +++ b/tutorials/ui/bbcode_in_richtextlabel.rst @@ -399,8 +399,11 @@ Reference * - | **ul** | Adds an unordered list. List ``{items}`` must be provided by putting one item per line of text. + | The bullet point can be customized using the ``{bullet}`` parameter, + see :ref:`doc_bbcode_in_richtextlabel_unordered_list_bullet`. - - ``[ul]{items}[/ul]`` + - | ``[ul]{items}[/ul]`` + | ``[ul bullet={bullet}]{items}[/ul]`` * - | **ol** | Adds an ordered (numbered) list of the given ``{type}`` (see :ref:`doc_bbcode_in_richtextlabel_list_types`). @@ -410,14 +413,21 @@ Reference * - | **lb**, **rb** | Adds ``[`` and ``]`` respectively. Allows escaping BBCode markup. + | These are self-closing tags, which means you do not need to close them + (and there is no ``[/lb]`` or ``[/rb]`` closing tag). - | ``[lb]b[rb]text[lb]/b[rb]`` will display as ``[b]text[/b]``. - * - | Several Unicode control character can be added using their own tags. + * - | Several Unicode control characters can be added using their own self-closing tags. + | This can result in easier maintenance compared to pasting those + | control characters directly in the text. - - | ``[lrm]``, ``[rlm]``, ``[lre]``, ``[rle]``, ``[lro]``, ``[rlo]``, - ``[pdf]``, ``[alm]``, ``[lri]``, ``[rli]``, ``[fsi]``, ``[pdi]``, - ``[zwj]``, ``[zwnj]``, ``[wj]`` + - | ``[lrm]`` (left-to-right mark), ``[rlm]`` (right-to-left mark), ``[lre]`` (left-to-right embedding), + | ``[rle]`` (right-to-left embedding), ``[lro]`` (left-to-right override), ``[rlo]`` (right-to-left override), + | ``[pdf]`` (pop directional formatting), ``[alm]`` (Arabic letter mark), ``[lri]`` (left-to-right isolate), + | ``[rli]`` (right-to-left isolate), ``[fsi]`` (first strong isolate), ``[pdi]`` (pop directional isolate), + | ``[zwj]`` (zero-width joiner), ``[zwnj]`` (zero-width non-joiner), ``[wj]`` (word joiner), + | ``[shy]`` (soft hyphen) .. note:: @@ -647,8 +657,8 @@ Cell options | `Default` | 1 | +-----------+--------------------------------------------+ - Cell expansion ration, which cell will try to expand to proportionally to other - cells and their expansion ratios. + Cell expansion ratio. This defines which cells will try to expand to + proportionally to other cells and their expansion ratios. - **border** @@ -668,9 +678,24 @@ Cell options | `Default` | Inherit | +-----------+--------------------------------------------+ - Cell background color. For alternating odd/even row backgrounds + Cell background color. For alternating odd/even row backgrounds, you can use ``bg=odd_color,even_color``. +.. _doc_bbcode_in_richtextlabel_unordered_list_bullet: + +Unordered list bullet +~~~~~~~~~~~~~~~~~~~~~ + +By default, the ``[ul]`` tag uses the ``U+2022`` "Bullet" Unicode glyph as the +bullet character. This behavior is similar to web browsers. The bullet character +can be customized using ``[ul bullet={bullet}]``. If provided, this ``{bullet}`` +parameter must be a *single* character with no enclosing quotes (for example, +``[bullet=*]``). Additional characters are ignored. The bullet character's +width does not affect the list's formatting. + +See `Bullet (typography) on Wikipedia `__ +for a list of common bullet characters that you can paste directly in the ``bullet`` parameter. + .. _doc_bbcode_in_richtextlabel_list_types: Ordered list types From 5482c93e8701d9c5620237a43d28a1c36f5e79ac Mon Sep 17 00:00:00 2001 From: Godot Organization Date: Sat, 24 Jun 2023 03:22:36 +0000 Subject: [PATCH 025/133] classref: Sync with current master branch (19e7490) --- classes/class_@gdscript.rst | 13 +- classes/class_@globalscope.rst | 78 +- classes/class_aabb.rst | 1 + classes/class_acceptdialog.rst | 1 + classes/class_aescontext.rst | 1 + classes/class_animatablebody2d.rst | 1 + classes/class_animatablebody3d.rst | 1 + classes/class_animatedsprite2d.rst | 1 + classes/class_animatedsprite3d.rst | 1 + classes/class_animatedtexture.rst | 1 + classes/class_animation.rst | 1 + classes/class_animationlibrary.rst | 1 + classes/class_animationnode.rst | 1 + classes/class_animationnodeadd2.rst | 1 + classes/class_animationnodeadd3.rst | 1 + classes/class_animationnodeanimation.rst | 1 + classes/class_animationnodeblend2.rst | 1 + classes/class_animationnodeblend3.rst | 1 + classes/class_animationnodeblendspace1d.rst | 1 + classes/class_animationnodeblendspace2d.rst | 1 + classes/class_animationnodeblendtree.rst | 1 + classes/class_animationnodeoneshot.rst | 1 + classes/class_animationnodeoutput.rst | 1 + classes/class_animationnodestatemachine.rst | 1 + ...lass_animationnodestatemachineplayback.rst | 1 + ...ss_animationnodestatemachinetransition.rst | 1 + classes/class_animationnodesub2.rst | 1 + classes/class_animationnodesync.rst | 1 + classes/class_animationnodetimescale.rst | 1 + classes/class_animationnodetimeseek.rst | 1 + classes/class_animationnodetransition.rst | 1 + classes/class_animationplayer.rst | 5 +- classes/class_animationrootnode.rst | 1 + classes/class_animationtree.rst | 5 +- classes/class_area2d.rst | 1 + classes/class_area3d.rst | 1 + classes/class_array.rst | 3 + classes/class_arraymesh.rst | 83 +- classes/class_arrayoccluder3d.rst | 1 + classes/class_aspectratiocontainer.rst | 1 + classes/class_astar2d.rst | 1 + classes/class_astar3d.rst | 1 + classes/class_astargrid2d.rst | 1 + classes/class_atlastexture.rst | 1 + classes/class_audiobuslayout.rst | 1 + classes/class_audioeffect.rst | 1 + classes/class_audioeffectamplify.rst | 1 + classes/class_audioeffectbandlimitfilter.rst | 1 + classes/class_audioeffectbandpassfilter.rst | 1 + classes/class_audioeffectcapture.rst | 1 + classes/class_audioeffectchorus.rst | 1 + classes/class_audioeffectcompressor.rst | 1 + classes/class_audioeffectdelay.rst | 1 + classes/class_audioeffectdistortion.rst | 1 + classes/class_audioeffecteq.rst | 1 + classes/class_audioeffecteq10.rst | 1 + classes/class_audioeffecteq21.rst | 1 + classes/class_audioeffecteq6.rst | 1 + classes/class_audioeffectfilter.rst | 1 + classes/class_audioeffecthighpassfilter.rst | 1 + classes/class_audioeffecthighshelffilter.rst | 1 + classes/class_audioeffectinstance.rst | 1 + classes/class_audioeffectlimiter.rst | 1 + classes/class_audioeffectlowpassfilter.rst | 1 + classes/class_audioeffectlowshelffilter.rst | 1 + classes/class_audioeffectnotchfilter.rst | 1 + classes/class_audioeffectpanner.rst | 1 + classes/class_audioeffectphaser.rst | 1 + classes/class_audioeffectpitchshift.rst | 1 + classes/class_audioeffectrecord.rst | 1 + classes/class_audioeffectreverb.rst | 1 + classes/class_audioeffectspectrumanalyzer.rst | 1 + ...ss_audioeffectspectrumanalyzerinstance.rst | 1 + classes/class_audioeffectstereoenhance.rst | 1 + classes/class_audiolistener2d.rst | 1 + classes/class_audiolistener3d.rst | 1 + classes/class_audioserver.rst | 3 +- classes/class_audiostream.rst | 1 + classes/class_audiostreamgenerator.rst | 1 + .../class_audiostreamgeneratorplayback.rst | 1 + classes/class_audiostreammicrophone.rst | 1 + classes/class_audiostreammp3.rst | 1 + classes/class_audiostreamoggvorbis.rst | 1 + classes/class_audiostreamplayback.rst | 1 + .../class_audiostreamplaybackoggvorbis.rst | 1 + .../class_audiostreamplaybackpolyphonic.rst | 1 + .../class_audiostreamplaybackresampled.rst | 1 + classes/class_audiostreamplayer.rst | 1 + classes/class_audiostreamplayer2d.rst | 1 + classes/class_audiostreamplayer3d.rst | 5 +- classes/class_audiostreampolyphonic.rst | 1 + classes/class_audiostreamrandomizer.rst | 1 + classes/class_audiostreamwav.rst | 1 + classes/class_backbuffercopy.rst | 1 + classes/class_basebutton.rst | 53 +- classes/class_basematerial3d.rst | 1 + classes/class_basis.rst | 1 + classes/class_bitmap.rst | 1 + classes/class_bone2d.rst | 1 + classes/class_boneattachment3d.rst | 1 + classes/class_bonemap.rst | 1 + classes/class_bool.rst | 1 + classes/class_boxcontainer.rst | 1 + classes/class_boxmesh.rst | 1 + classes/class_boxoccluder3d.rst | 1 + classes/class_boxshape3d.rst | 1 + classes/class_button.rst | 1 + classes/class_buttongroup.rst | 1 + classes/class_callable.rst | 18 +- classes/class_callbacktweener.rst | 1 + classes/class_camera2d.rst | 5 +- classes/class_camera3d.rst | 1 + classes/class_cameraattributes.rst | 1 + classes/class_cameraattributesphysical.rst | 1 + classes/class_cameraattributespractical.rst | 1 + classes/class_camerafeed.rst | 1 + classes/class_cameraserver.rst | 1 + classes/class_cameratexture.rst | 1 + classes/class_canvasgroup.rst | 1 + classes/class_canvasitem.rst | 239 +++--- classes/class_canvasitemmaterial.rst | 1 + classes/class_canvaslayer.rst | 1 + classes/class_canvasmodulate.rst | 1 + classes/class_canvastexture.rst | 1 + classes/class_capsulemesh.rst | 1 + classes/class_capsuleshape2d.rst | 1 + classes/class_capsuleshape3d.rst | 1 + classes/class_centercontainer.rst | 1 + classes/class_characterbody2d.rst | 1 + classes/class_characterbody3d.rst | 1 + classes/class_charfxtransform.rst | 5 +- classes/class_checkbox.rst | 1 + classes/class_checkbutton.rst | 1 + classes/class_circleshape2d.rst | 1 + classes/class_classdb.rst | 1 + classes/class_codeedit.rst | 1 + classes/class_codehighlighter.rst | 1 + classes/class_collisionobject2d.rst | 1 + classes/class_collisionobject3d.rst | 1 + classes/class_collisionpolygon2d.rst | 1 + classes/class_collisionpolygon3d.rst | 1 + classes/class_collisionshape2d.rst | 1 + classes/class_collisionshape3d.rst | 1 + classes/class_color.rst | 1 + classes/class_colorpicker.rst | 1 + classes/class_colorpickerbutton.rst | 1 + classes/class_colorrect.rst | 1 + classes/class_compressedcubemap.rst | 1 + classes/class_compressedcubemaparray.rst | 1 + classes/class_compressedtexture2d.rst | 1 + classes/class_compressedtexture2darray.rst | 1 + classes/class_compressedtexture3d.rst | 1 + classes/class_compressedtexturelayered.rst | 1 + classes/class_concavepolygonshape2d.rst | 1 + classes/class_concavepolygonshape3d.rst | 1 + classes/class_conetwistjoint3d.rst | 1 + classes/class_configfile.rst | 1 + classes/class_confirmationdialog.rst | 1 + classes/class_container.rst | 1 + classes/class_control.rst | 171 ++-- classes/class_convexpolygonshape2d.rst | 1 + classes/class_convexpolygonshape3d.rst | 1 + classes/class_cpuparticles2d.rst | 1 + classes/class_cpuparticles3d.rst | 1 + classes/class_crypto.rst | 1 + classes/class_cryptokey.rst | 1 + classes/class_csgbox3d.rst | 1 + classes/class_csgcombiner3d.rst | 1 + classes/class_csgcylinder3d.rst | 1 + classes/class_csgmesh3d.rst | 1 + classes/class_csgpolygon3d.rst | 1 + classes/class_csgprimitive3d.rst | 1 + classes/class_csgshape3d.rst | 1 + classes/class_csgsphere3d.rst | 1 + classes/class_csgtorus3d.rst | 1 + classes/class_csharpscript.rst | 3 +- classes/class_cubemap.rst | 1 + classes/class_cubemaparray.rst | 1 + classes/class_curve.rst | 1 + classes/class_curve2d.rst | 14 +- classes/class_curve3d.rst | 1 + classes/class_curvetexture.rst | 1 + classes/class_curvexyztexture.rst | 1 + classes/class_cylindermesh.rst | 1 + classes/class_cylindershape3d.rst | 1 + classes/class_dampedspringjoint2d.rst | 1 + classes/class_decal.rst | 1 + classes/class_dictionary.rst | 1 + classes/class_diraccess.rst | 1 + classes/class_directionallight2d.rst | 1 + classes/class_directionallight3d.rst | 1 + classes/class_displayserver.rst | 667 ++++++++------- classes/class_dtlsserver.rst | 1 + classes/class_editorcommandpalette.rst | 1 + classes/class_editordebuggerplugin.rst | 1 + classes/class_editordebuggersession.rst | 1 + classes/class_editorexportplatform.rst | 1 + classes/class_editorexportplatformandroid.rst | 1 + classes/class_editorexportplatformios.rst | 1 + .../class_editorexportplatformlinuxbsd.rst | 9 +- classes/class_editorexportplatformmacos.rst | 9 +- classes/class_editorexportplatformpc.rst | 1 + classes/class_editorexportplatformweb.rst | 1 + classes/class_editorexportplatformwindows.rst | 7 +- classes/class_editorexportplugin.rst | 1 + classes/class_editorfeatureprofile.rst | 1 + classes/class_editorfiledialog.rst | 1 + classes/class_editorfilesystem.rst | 1 + classes/class_editorfilesystemdirectory.rst | 1 + ...itorfilesystemimportformatsupportquery.rst | 1 + classes/class_editorimportplugin.rst | 1 + classes/class_editorinspector.rst | 1 + classes/class_editorinspectorplugin.rst | 41 +- classes/class_editorinterface.rst | 15 + classes/class_editornode3dgizmo.rst | 1 + classes/class_editornode3dgizmoplugin.rst | 1 + classes/class_editorpaths.rst | 1 + classes/class_editorplugin.rst | 1 + classes/class_editorproperty.rst | 1 + .../class_editorresourceconversionplugin.rst | 1 + classes/class_editorresourcepicker.rst | 1 + classes/class_editorresourcepreview.rst | 1 + .../class_editorresourcepreviewgenerator.rst | 1 + classes/class_editorresourcetooltipplugin.rst | 1 + classes/class_editorsceneformatimporter.rst | 1 + .../class_editorsceneformatimporterblend.rst | 1 + .../class_editorsceneformatimporterfbx.rst | 1 + .../class_editorsceneformatimportergltf.rst | 1 + classes/class_editorscenepostimport.rst | 1 + classes/class_editorscenepostimportplugin.rst | 1 + classes/class_editorscript.rst | 1 + classes/class_editorscriptpicker.rst | 1 + classes/class_editorselection.rst | 1 + classes/class_editorsettings.rst | 77 +- classes/class_editorspinslider.rst | 35 +- classes/class_editorsyntaxhighlighter.rst | 1 + .../class_editortranslationparserplugin.rst | 1 + classes/class_editorundoredomanager.rst | 51 +- classes/class_editorvcsinterface.rst | 1 + classes/class_encodedobjectasid.rst | 1 + classes/class_enetconnection.rst | 19 + classes/class_enetmultiplayerpeer.rst | 1 + classes/class_enetpacketpeer.rst | 1 + classes/class_engine.rst | 1 + classes/class_enginedebugger.rst | 1 + classes/class_engineprofiler.rst | 1 + classes/class_environment.rst | 1 + classes/class_expression.rst | 1 + classes/class_fastnoiselite.rst | 1 + classes/class_fileaccess.rst | 1 + classes/class_filedialog.rst | 1 + classes/class_filesystemdock.rst | 1 + classes/class_float.rst | 1 + classes/class_flowcontainer.rst | 1 + classes/class_fogmaterial.rst | 1 + classes/class_fogvolume.rst | 1 + classes/class_font.rst | 153 ++-- classes/class_fontfile.rst | 9 +- classes/class_fontvariation.rst | 1 + classes/class_gdextension.rst | 1 + classes/class_gdextensionmanager.rst | 1 + classes/class_gdscript.rst | 3 +- classes/class_generic6dofjoint3d.rst | 1 + classes/class_geometry2d.rst | 1 + classes/class_geometry3d.rst | 1 + classes/class_geometryinstance3d.rst | 1 + classes/class_gltfaccessor.rst | 1 + classes/class_gltfanimation.rst | 1 + classes/class_gltfbufferview.rst | 1 + classes/class_gltfcamera.rst | 1 + classes/class_gltfdocument.rst | 1 + classes/class_gltfdocumentextension.rst | 1 + ...tfdocumentextensionconvertimportermesh.rst | 1 + classes/class_gltflight.rst | 1 + classes/class_gltfmesh.rst | 1 + classes/class_gltfnode.rst | 1 + classes/class_gltfphysicsbody.rst | 1 + ...ollider.rst => class_gltfphysicsshape.rst} | 111 +-- classes/class_gltfskeleton.rst | 1 + classes/class_gltfskin.rst | 1 + classes/class_gltfspecgloss.rst | 1 + classes/class_gltfstate.rst | 1 + classes/class_gltftexture.rst | 1 + classes/class_gltftexturesampler.rst | 1 + classes/class_godotsharp.rst | 1 + classes/class_gpuparticles2d.rst | 1 + classes/class_gpuparticles3d.rst | 1 + classes/class_gpuparticlesattractor3d.rst | 1 + classes/class_gpuparticlesattractorbox3d.rst | 1 + .../class_gpuparticlesattractorsphere3d.rst | 1 + ...ass_gpuparticlesattractorvectorfield3d.rst | 1 + classes/class_gpuparticlescollision3d.rst | 1 + classes/class_gpuparticlescollisionbox3d.rst | 1 + ...ass_gpuparticlescollisionheightfield3d.rst | 1 + classes/class_gpuparticlescollisionsdf3d.rst | 1 + .../class_gpuparticlescollisionsphere3d.rst | 1 + classes/class_gradient.rst | 1 + classes/class_gradienttexture1d.rst | 1 + classes/class_gradienttexture2d.rst | 1 + classes/class_graphedit.rst | 1 + classes/class_graphnode.rst | 1 + classes/class_gridcontainer.rst | 1 + classes/class_gridmap.rst | 1 + classes/class_groovejoint2d.rst | 1 + classes/class_hashingcontext.rst | 1 + classes/class_hboxcontainer.rst | 1 + classes/class_heightmapshape3d.rst | 1 + classes/class_hflowcontainer.rst | 1 + classes/class_hingejoint3d.rst | 1 + classes/class_hmaccontext.rst | 1 + classes/class_hscrollbar.rst | 1 + classes/class_hseparator.rst | 1 + classes/class_hslider.rst | 1 + classes/class_hsplitcontainer.rst | 1 + classes/class_httpclient.rst | 1 + classes/class_httprequest.rst | 1 + classes/class_image.rst | 1 + classes/class_imageformatloader.rst | 1 + classes/class_imageformatloaderextension.rst | 21 +- classes/class_imagetexture.rst | 1 + classes/class_imagetexture3d.rst | 1 + classes/class_imagetexturelayered.rst | 1 + classes/class_immediatemesh.rst | 1 + classes/class_importermesh.rst | 1 + classes/class_importermeshinstance3d.rst | 1 + classes/class_input.rst | 185 ++-- classes/class_inputevent.rst | 1 + classes/class_inputeventaction.rst | 1 + classes/class_inputeventfromwindow.rst | 1 + classes/class_inputeventgesture.rst | 1 + classes/class_inputeventjoypadbutton.rst | 1 + classes/class_inputeventjoypadmotion.rst | 1 + classes/class_inputeventkey.rst | 1 + classes/class_inputeventmagnifygesture.rst | 1 + classes/class_inputeventmidi.rst | 1 + classes/class_inputeventmouse.rst | 21 +- classes/class_inputeventmousebutton.rst | 1 + classes/class_inputeventmousemotion.rst | 1 + classes/class_inputeventpangesture.rst | 1 + classes/class_inputeventscreendrag.rst | 1 + classes/class_inputeventscreentouch.rst | 1 + classes/class_inputeventshortcut.rst | 1 + classes/class_inputeventwithmodifiers.rst | 13 +- classes/class_inputmap.rst | 1 + classes/class_instanceplaceholder.rst | 1 + classes/class_int.rst | 1 + classes/class_intervaltweener.rst | 1 + classes/class_ip.rst | 1 + classes/class_itemlist.rst | 1 + classes/class_javaclass.rst | 1 + classes/class_javaclasswrapper.rst | 1 + classes/class_javascriptbridge.rst | 1 + classes/class_javascriptobject.rst | 1 + classes/class_jnisingleton.rst | 1 + classes/class_joint2d.rst | 1 + classes/class_joint3d.rst | 1 + classes/class_json.rst | 2 + classes/class_jsonrpc.rst | 1 + classes/class_kinematiccollision2d.rst | 1 + classes/class_kinematiccollision3d.rst | 1 + classes/class_label.rst | 11 +- classes/class_label3d.rst | 9 +- classes/class_labelsettings.rst | 1 + classes/class_light2d.rst | 1 + classes/class_light3d.rst | 1 + classes/class_lightmapgi.rst | 1 + classes/class_lightmapgidata.rst | 1 + classes/class_lightmapper.rst | 1 + classes/class_lightmapperrd.rst | 1 + classes/class_lightmapprobe.rst | 1 + classes/class_lightoccluder2d.rst | 1 + classes/class_line2d.rst | 1 + classes/class_lineedit.rst | 1 + classes/class_linkbutton.rst | 1 + classes/class_mainloop.rst | 1 + classes/class_margincontainer.rst | 1 + classes/class_marker2d.rst | 1 + classes/class_marker3d.rst | 1 + classes/class_marshalls.rst | 1 + classes/class_material.rst | 1 + classes/class_menubar.rst | 1 + classes/class_menubutton.rst | 1 + classes/class_mesh.rst | 1 + .../class_meshconvexdecompositionsettings.rst | 1 + classes/class_meshdatatool.rst | 1 + classes/class_meshinstance2d.rst | 1 + classes/class_meshinstance3d.rst | 1 + classes/class_meshlibrary.rst | 1 + classes/class_meshtexture.rst | 1 + classes/class_methodtweener.rst | 1 + classes/class_missingnode.rst | 1 + classes/class_missingresource.rst | 1 + classes/class_mobilevrinterface.rst | 1 + classes/class_moviewriter.rst | 1 + classes/class_multimesh.rst | 1 + classes/class_multimeshinstance2d.rst | 1 + classes/class_multimeshinstance3d.rst | 1 + classes/class_multiplayerapi.rst | 1 + classes/class_multiplayerapiextension.rst | 1 + classes/class_multiplayerpeer.rst | 1 + classes/class_multiplayerpeerextension.rst | 1 + classes/class_multiplayerspawner.rst | 1 + classes/class_multiplayersynchronizer.rst | 5 +- classes/class_mutex.rst | 1 + classes/class_navigationagent2d.rst | 105 +-- classes/class_navigationagent3d.rst | 113 +-- classes/class_navigationlink2d.rst | 1 + classes/class_navigationlink3d.rst | 1 + classes/class_navigationmesh.rst | 5 +- classes/class_navigationmeshgenerator.rst | 43 +- ...ass_navigationmeshsourcegeometrydata3d.rst | 175 ++++ classes/class_navigationobstacle2d.rst | 60 +- classes/class_navigationobstacle3d.rst | 68 +- .../class_navigationpathqueryparameters2d.rst | 39 +- .../class_navigationpathqueryparameters3d.rst | 39 +- classes/class_navigationpathqueryresult2d.rst | 1 + classes/class_navigationpathqueryresult3d.rst | 1 + classes/class_navigationpolygon.rst | 35 + classes/class_navigationregion2d.rst | 1 + classes/class_navigationregion3d.rst | 1 + classes/class_navigationserver2d.rst | 123 ++- classes/class_navigationserver3d.rst | 591 ++++++++----- classes/class_ninepatchrect.rst | 1 + classes/class_node.rst | 91 +- classes/class_node2d.rst | 1 + classes/class_node3d.rst | 1 + classes/class_node3dgizmo.rst | 1 + classes/class_nodepath.rst | 1 + classes/class_noise.rst | 1 + classes/class_noisetexture2d.rst | 1 + classes/class_noisetexture3d.rst | 1 + classes/class_object.rst | 24 +- classes/class_occluder3d.rst | 1 + classes/class_occluderinstance3d.rst | 1 + classes/class_occluderpolygon2d.rst | 1 + classes/class_offlinemultiplayerpeer.rst | 1 + classes/class_oggpacketsequence.rst | 1 + classes/class_oggpacketsequenceplayback.rst | 1 + classes/class_omnilight3d.rst | 1 + classes/class_openxraction.rst | 1 + classes/class_openxractionmap.rst | 1 + classes/class_openxractionset.rst | 1 + classes/class_openxrhand.rst | 1 + classes/class_openxrinteractionprofile.rst | 1 + classes/class_openxrinterface.rst | 1 + classes/class_openxripbinding.rst | 1 + classes/class_optimizedtranslation.rst | 1 + classes/class_optionbutton.rst | 1 + classes/class_ormmaterial3d.rst | 1 + classes/class_os.rst | 1 + classes/class_packedbytearray.rst | 1 + classes/class_packedcolorarray.rst | 7 + classes/class_packeddatacontainer.rst | 1 + classes/class_packeddatacontainerref.rst | 1 + classes/class_packedfloat32array.rst | 1 + classes/class_packedfloat64array.rst | 1 + classes/class_packedint32array.rst | 1 + classes/class_packedint64array.rst | 1 + classes/class_packedscene.rst | 1 + classes/class_packedstringarray.rst | 1 + classes/class_packedvector2array.rst | 7 + classes/class_packedvector3array.rst | 7 + classes/class_packetpeer.rst | 1 + classes/class_packetpeerdtls.rst | 1 + classes/class_packetpeerextension.rst | 1 + classes/class_packetpeerstream.rst | 1 + classes/class_packetpeerudp.rst | 1 + classes/class_panel.rst | 1 + classes/class_panelcontainer.rst | 1 + classes/class_panoramaskymaterial.rst | 1 + classes/class_parallaxbackground.rst | 1 + classes/class_parallaxlayer.rst | 1 + classes/class_particleprocessmaterial.rst | 1 + classes/class_path2d.rst | 1 + classes/class_path3d.rst | 1 + classes/class_pathfollow2d.rst | 1 + classes/class_pathfollow3d.rst | 1 + classes/class_pckpacker.rst | 1 + classes/class_performance.rst | 1 + classes/class_physicalbone2d.rst | 1 + classes/class_physicalbone3d.rst | 1 + classes/class_physicalskymaterial.rst | 1 + classes/class_physicsbody2d.rst | 1 + classes/class_physicsbody3d.rst | 1 + classes/class_physicsdirectbodystate2d.rst | 1 + ...lass_physicsdirectbodystate2dextension.rst | 1 + classes/class_physicsdirectbodystate3d.rst | 1 + ...lass_physicsdirectbodystate3dextension.rst | 1 + classes/class_physicsdirectspacestate2d.rst | 1 + ...ass_physicsdirectspacestate2dextension.rst | 1 + classes/class_physicsdirectspacestate3d.rst | 1 + ...ass_physicsdirectspacestate3dextension.rst | 1 + classes/class_physicsmaterial.rst | 1 + .../class_physicspointqueryparameters2d.rst | 1 + .../class_physicspointqueryparameters3d.rst | 1 + classes/class_physicsrayqueryparameters2d.rst | 1 + classes/class_physicsrayqueryparameters3d.rst | 1 + classes/class_physicsserver2d.rst | 473 +++++------ classes/class_physicsserver2dextension.rst | 1 + classes/class_physicsserver2dmanager.rst | 1 + classes/class_physicsserver3d.rst | 1 + classes/class_physicsserver3dextension.rst | 1 + classes/class_physicsserver3dmanager.rst | 1 + ..._physicsserver3drenderingserverhandler.rst | 1 + .../class_physicsshapequeryparameters2d.rst | 5 +- .../class_physicsshapequeryparameters3d.rst | 5 +- .../class_physicstestmotionparameters2d.rst | 1 + .../class_physicstestmotionparameters3d.rst | 1 + classes/class_physicstestmotionresult2d.rst | 1 + classes/class_physicstestmotionresult3d.rst | 1 + classes/class_pinjoint2d.rst | 1 + classes/class_pinjoint3d.rst | 1 + classes/class_placeholdercubemap.rst | 1 + classes/class_placeholdercubemaparray.rst | 1 + classes/class_placeholdermaterial.rst | 1 + classes/class_placeholdermesh.rst | 1 + classes/class_placeholdertexture2d.rst | 1 + classes/class_placeholdertexture2darray.rst | 1 + classes/class_placeholdertexture3d.rst | 1 + classes/class_placeholdertexturelayered.rst | 1 + classes/class_plane.rst | 7 +- classes/class_planemesh.rst | 1 + classes/class_pointlight2d.rst | 1 + classes/class_pointmesh.rst | 1 + classes/class_polygon2d.rst | 1 + classes/class_polygonoccluder3d.rst | 1 + classes/class_polygonpathfinder.rst | 1 + classes/class_popup.rst | 1 + classes/class_popupmenu.rst | 1 + classes/class_popuppanel.rst | 1 + classes/class_portablecompressedtexture2d.rst | 1 + classes/class_primitivemesh.rst | 1 + classes/class_prismmesh.rst | 1 + classes/class_proceduralskymaterial.rst | 1 + classes/class_progressbar.rst | 1 + classes/class_projection.rst | 1 + classes/class_projectsettings.rst | 75 +- classes/class_propertytweener.rst | 1 + classes/class_quadmesh.rst | 1 + classes/class_quadoccluder3d.rst | 1 + classes/class_quaternion.rst | 1 + classes/class_randomnumbergenerator.rst | 1 + classes/class_range.rst | 47 +- classes/class_raycast2d.rst | 1 + classes/class_raycast3d.rst | 1 + classes/class_rdattachmentformat.rst | 1 + classes/class_rdframebufferpass.rst | 1 + classes/class_rdpipelinecolorblendstate.rst | 1 + ...ss_rdpipelinecolorblendstateattachment.rst | 1 + classes/class_rdpipelinedepthstencilstate.rst | 1 + classes/class_rdpipelinemultisamplestate.rst | 1 + .../class_rdpipelinerasterizationstate.rst | 1 + ...class_rdpipelinespecializationconstant.rst | 1 + classes/class_rdsamplerstate.rst | 1 + classes/class_rdshaderfile.rst | 1 + classes/class_rdshadersource.rst | 1 + classes/class_rdshaderspirv.rst | 1 + classes/class_rdtextureformat.rst | 45 +- classes/class_rdtextureview.rst | 1 + classes/class_rduniform.rst | 1 + classes/class_rdvertexattribute.rst | 1 + classes/class_rect2.rst | 1 + classes/class_rect2i.rst | 1 + classes/class_rectangleshape2d.rst | 1 + classes/class_refcounted.rst | 1 + classes/class_referencerect.rst | 1 + classes/class_reflectionprobe.rst | 1 + classes/class_regex.rst | 1 + classes/class_regexmatch.rst | 1 + classes/class_remotetransform2d.rst | 1 + classes/class_remotetransform3d.rst | 1 + classes/class_renderingdevice.rst | 411 ++++----- classes/class_renderingserver.rst | 69 +- classes/class_resource.rst | 3 +- classes/class_resourceformatloader.rst | 1 + classes/class_resourceformatsaver.rst | 1 + classes/class_resourceimporter.rst | 1 + classes/class_resourceloader.rst | 1 + classes/class_resourcepreloader.rst | 1 + classes/class_resourcesaver.rst | 21 +- classes/class_resourceuid.rst | 1 + classes/class_ribbontrailmesh.rst | 1 + classes/class_richtexteffect.rst | 1 + classes/class_richtextlabel.rst | 261 +++--- classes/class_rid.rst | 1 + classes/class_rigidbody2d.rst | 1 + classes/class_rigidbody3d.rst | 1 + classes/class_rootmotionview.rst | 1 + classes/class_scenemultiplayer.rst | 5 +- classes/class_scenereplicationconfig.rst | 1 + classes/class_scenestate.rst | 1 + classes/class_scenetree.rst | 25 +- classes/class_scenetreetimer.rst | 3 + classes/class_script.rst | 1 + classes/class_scriptcreatedialog.rst | 1 + classes/class_scripteditor.rst | 1 + classes/class_scripteditorbase.rst | 1 + classes/class_scriptextension.rst | 1 + classes/class_scriptlanguage.rst | 1 + classes/class_scriptlanguageextension.rst | 1 + classes/class_scrollbar.rst | 1 + classes/class_scrollcontainer.rst | 1 + classes/class_segmentshape2d.rst | 1 + classes/class_semaphore.rst | 1 + classes/class_separationrayshape2d.rst | 1 + classes/class_separationrayshape3d.rst | 1 + classes/class_separator.rst | 1 + classes/class_shader.rst | 9 +- classes/class_shaderglobalsoverride.rst | 1 + classes/class_shaderinclude.rst | 21 +- classes/class_shadermaterial.rst | 1 + classes/class_shape2d.rst | 1 + classes/class_shape3d.rst | 1 + classes/class_shapecast2d.rst | 1 + classes/class_shapecast3d.rst | 1 + classes/class_shortcut.rst | 1 + classes/class_signal.rst | 1 + classes/class_skeleton2d.rst | 1 + classes/class_skeleton3d.rst | 1 + classes/class_skeletonik3d.rst | 1 + classes/class_skeletonmodification2d.rst | 1 + classes/class_skeletonmodification2dccdik.rst | 1 + .../class_skeletonmodification2dfabrik.rst | 1 + .../class_skeletonmodification2djiggle.rst | 1 + .../class_skeletonmodification2dlookat.rst | 1 + ...ss_skeletonmodification2dphysicalbones.rst | 1 + ...lass_skeletonmodification2dstackholder.rst | 1 + .../class_skeletonmodification2dtwoboneik.rst | 1 + classes/class_skeletonmodificationstack2d.rst | 1 + classes/class_skeletonprofile.rst | 1 + classes/class_skeletonprofilehumanoid.rst | 1 + classes/class_skin.rst | 1 + classes/class_skinreference.rst | 1 + classes/class_sky.rst | 1 + classes/class_slider.rst | 1 + classes/class_sliderjoint3d.rst | 1 + classes/class_softbody3d.rst | 1 + classes/class_spheremesh.rst | 1 + classes/class_sphereoccluder3d.rst | 1 + classes/class_sphereshape3d.rst | 1 + classes/class_spinbox.rst | 3 +- classes/class_splitcontainer.rst | 1 + classes/class_spotlight3d.rst | 1 + classes/class_springarm3d.rst | 1 + classes/class_sprite2d.rst | 1 + classes/class_sprite3d.rst | 1 + classes/class_spritebase3d.rst | 1 + classes/class_spriteframes.rst | 1 + classes/class_standardmaterial3d.rst | 1 + classes/class_staticbody2d.rst | 1 + classes/class_staticbody3d.rst | 1 + classes/class_streampeer.rst | 1 + classes/class_streampeerbuffer.rst | 1 + classes/class_streampeerextension.rst | 1 + classes/class_streampeergzip.rst | 1 + classes/class_streampeertcp.rst | 1 + classes/class_streampeertls.rst | 1 + classes/class_string.rst | 3 +- classes/class_stringname.rst | 1 + classes/class_stylebox.rst | 1 + classes/class_styleboxempty.rst | 1 + classes/class_styleboxflat.rst | 1 + classes/class_styleboxline.rst | 1 + classes/class_styleboxtexture.rst | 1 + classes/class_subviewport.rst | 1 + classes/class_subviewportcontainer.rst | 1 + classes/class_surfacetool.rst | 1 + classes/class_syntaxhighlighter.rst | 1 + classes/class_systemfont.rst | 1 + classes/class_tabbar.rst | 1 + classes/class_tabcontainer.rst | 1 + classes/class_tcpserver.rst | 1 + classes/class_textedit.rst | 20 + classes/class_textline.rst | 41 +- classes/class_textmesh.rst | 81 +- classes/class_textparagraph.rst | 59 +- classes/class_textserver.rst | 29 +- classes/class_textserveradvanced.rst | 1 + classes/class_textserverdummy.rst | 1 + classes/class_textserverextension.rst | 801 +++++++++--------- classes/class_textserverfallback.rst | 1 + classes/class_textservermanager.rst | 1 + classes/class_texture.rst | 1 + classes/class_texture2d.rst | 1 + classes/class_texture2darray.rst | 1 + classes/class_texture3d.rst | 1 + classes/class_texturebutton.rst | 1 + classes/class_texturelayered.rst | 1 + classes/class_textureprogressbar.rst | 79 +- classes/class_texturerect.rst | 1 + classes/class_theme.rst | 1 + classes/class_themedb.rst | 1 + classes/class_thread.rst | 49 +- classes/class_tiledata.rst | 1 + classes/class_tilemap.rst | 1 + classes/class_tilemappattern.rst | 1 + classes/class_tileset.rst | 3 + classes/class_tilesetatlassource.rst | 1 + .../class_tilesetscenescollectionsource.rst | 1 + classes/class_tilesetsource.rst | 3 + classes/class_time.rst | 1 + classes/class_timer.rst | 5 +- classes/class_tlsoptions.rst | 1 + classes/class_torusmesh.rst | 1 + classes/class_touchscreenbutton.rst | 1 + classes/class_transform2d.rst | 1 + classes/class_transform3d.rst | 1 + classes/class_translation.rst | 1 + classes/class_translationserver.rst | 1 + classes/class_tree.rst | 1 + classes/class_treeitem.rst | 1 + classes/class_trianglemesh.rst | 1 + classes/class_tubetrailmesh.rst | 1 + classes/class_tween.rst | 11 +- classes/class_tweener.rst | 1 + classes/class_udpserver.rst | 1 + classes/class_undoredo.rst | 130 ++- classes/class_upnp.rst | 1 + classes/class_upnpdevice.rst | 1 + classes/class_variant.rst | 1 + classes/class_vboxcontainer.rst | 1 + classes/class_vector2.rst | 1 + classes/class_vector2i.rst | 1 + classes/class_vector3.rst | 1 + classes/class_vector3i.rst | 1 + classes/class_vector4.rst | 1 + classes/class_vector4i.rst | 1 + classes/class_vehiclebody3d.rst | 1 + classes/class_vehiclewheel3d.rst | 1 + classes/class_vflowcontainer.rst | 1 + classes/class_videostream.rst | 1 + classes/class_videostreamplayback.rst | 1 + classes/class_videostreamplayer.rst | 1 + classes/class_videostreamtheora.rst | 1 + classes/class_viewport.rst | 1 + classes/class_viewporttexture.rst | 1 + classes/class_visibleonscreenenabler2d.rst | 1 + classes/class_visibleonscreenenabler3d.rst | 1 + classes/class_visibleonscreennotifier2d.rst | 1 + classes/class_visibleonscreennotifier3d.rst | 1 + classes/class_visualinstance3d.rst | 1 + classes/class_visualshader.rst | 1 + classes/class_visualshadernode.rst | 1 + classes/class_visualshadernodebillboard.rst | 1 + .../class_visualshadernodebooleanconstant.rst | 1 + ...class_visualshadernodebooleanparameter.rst | 1 + classes/class_visualshadernodeclamp.rst | 1 + .../class_visualshadernodecolorconstant.rst | 1 + classes/class_visualshadernodecolorfunc.rst | 1 + classes/class_visualshadernodecolorop.rst | 1 + .../class_visualshadernodecolorparameter.rst | 1 + classes/class_visualshadernodecomment.rst | 1 + classes/class_visualshadernodecompare.rst | 1 + classes/class_visualshadernodeconstant.rst | 1 + classes/class_visualshadernodecubemap.rst | 1 + ...class_visualshadernodecubemapparameter.rst | 1 + .../class_visualshadernodecurvetexture.rst | 1 + .../class_visualshadernodecurvexyztexture.rst | 1 + classes/class_visualshadernodecustom.rst | 1 + .../class_visualshadernodederivativefunc.rst | 1 + classes/class_visualshadernodedeterminant.rst | 1 + .../class_visualshadernodedistancefade.rst | 1 + classes/class_visualshadernodedotproduct.rst | 1 + classes/class_visualshadernodeexpression.rst | 1 + classes/class_visualshadernodefaceforward.rst | 1 + .../class_visualshadernodefloatconstant.rst | 1 + classes/class_visualshadernodefloatfunc.rst | 1 + classes/class_visualshadernodefloatop.rst | 1 + .../class_visualshadernodefloatparameter.rst | 1 + classes/class_visualshadernodefresnel.rst | 1 + ...class_visualshadernodeglobalexpression.rst | 1 + classes/class_visualshadernodegroupbase.rst | 1 + classes/class_visualshadernodeif.rst | 1 + classes/class_visualshadernodeinput.rst | 1 + classes/class_visualshadernodeintconstant.rst | 1 + classes/class_visualshadernodeintfunc.rst | 1 + classes/class_visualshadernodeintop.rst | 1 + .../class_visualshadernodeintparameter.rst | 1 + classes/class_visualshadernodeis.rst | 1 + ...class_visualshadernodelinearscenedepth.rst | 1 + classes/class_visualshadernodemix.rst | 1 + classes/class_visualshadernodemultiplyadd.rst | 1 + .../class_visualshadernodeouterproduct.rst | 1 + classes/class_visualshadernodeoutput.rst | 1 + classes/class_visualshadernodeparameter.rst | 1 + .../class_visualshadernodeparameterref.rst | 1 + ...ss_visualshadernodeparticleaccelerator.rst | 1 + ...ass_visualshadernodeparticleboxemitter.rst | 1 + ...s_visualshadernodeparticleconevelocity.rst | 1 + .../class_visualshadernodeparticleemit.rst | 1 + .../class_visualshadernodeparticleemitter.rst | 1 + ...ss_visualshadernodeparticlemeshemitter.rst | 1 + ...lshadernodeparticlemultiplybyaxisangle.rst | 1 + .../class_visualshadernodeparticleoutput.rst | 1 + ...ass_visualshadernodeparticlerandomness.rst | 1 + ...ss_visualshadernodeparticleringemitter.rst | 1 + ..._visualshadernodeparticlesphereemitter.rst | 1 + .../class_visualshadernodeproximityfade.rst | 1 + classes/class_visualshadernoderandomrange.rst | 1 + classes/class_visualshadernoderemap.rst | 1 + .../class_visualshadernoderesizablebase.rst | 1 + classes/class_visualshadernodesample3d.rst | 1 + .../class_visualshadernodescreenuvtosdf.rst | 1 + classes/class_visualshadernodesdfraymarch.rst | 1 + .../class_visualshadernodesdftoscreenuv.rst | 1 + classes/class_visualshadernodesmoothstep.rst | 1 + classes/class_visualshadernodestep.rst | 1 + classes/class_visualshadernodeswitch.rst | 1 + classes/class_visualshadernodetexture.rst | 1 + .../class_visualshadernodetexture2darray.rst | 1 + ...isualshadernodetexture2darrayparameter.rst | 1 + ...ass_visualshadernodetexture2dparameter.rst | 1 + classes/class_visualshadernodetexture3d.rst | 1 + ...ass_visualshadernodetexture3dparameter.rst | 1 + ...class_visualshadernodetextureparameter.rst | 1 + ...ualshadernodetextureparametertriplanar.rst | 1 + classes/class_visualshadernodetexturesdf.rst | 1 + ...class_visualshadernodetexturesdfnormal.rst | 1 + ...class_visualshadernodetransformcompose.rst | 1 + ...lass_visualshadernodetransformconstant.rst | 1 + ...ass_visualshadernodetransformdecompose.rst | 1 + .../class_visualshadernodetransformfunc.rst | 1 + classes/class_visualshadernodetransformop.rst | 1 + ...ass_visualshadernodetransformparameter.rst | 1 + ...class_visualshadernodetransformvecmult.rst | 1 + .../class_visualshadernodeuintconstant.rst | 1 + classes/class_visualshadernodeuintfunc.rst | 1 + classes/class_visualshadernodeuintop.rst | 1 + .../class_visualshadernodeuintparameter.rst | 1 + classes/class_visualshadernodeuvfunc.rst | 1 + .../class_visualshadernodeuvpolarcoord.rst | 1 + classes/class_visualshadernodevarying.rst | 1 + .../class_visualshadernodevaryinggetter.rst | 1 + .../class_visualshadernodevaryingsetter.rst | 1 + .../class_visualshadernodevec2constant.rst | 1 + .../class_visualshadernodevec2parameter.rst | 1 + .../class_visualshadernodevec3constant.rst | 1 + .../class_visualshadernodevec3parameter.rst | 1 + .../class_visualshadernodevec4constant.rst | 1 + .../class_visualshadernodevec4parameter.rst | 1 + classes/class_visualshadernodevectorbase.rst | 1 + .../class_visualshadernodevectorcompose.rst | 1 + .../class_visualshadernodevectordecompose.rst | 1 + .../class_visualshadernodevectordistance.rst | 1 + classes/class_visualshadernodevectorfunc.rst | 1 + classes/class_visualshadernodevectorlen.rst | 1 + classes/class_visualshadernodevectorop.rst | 1 + .../class_visualshadernodevectorrefract.rst | 1 + classes/class_voxelgi.rst | 1 + classes/class_voxelgidata.rst | 1 + classes/class_vscrollbar.rst | 11 +- classes/class_vseparator.rst | 1 + classes/class_vslider.rst | 11 +- classes/class_vsplitcontainer.rst | 1 + classes/class_weakref.rst | 1 + classes/class_webrtcdatachannel.rst | 1 + classes/class_webrtcdatachannelextension.rst | 1 + classes/class_webrtcmultiplayerpeer.rst | 1 + classes/class_webrtcpeerconnection.rst | 1 + .../class_webrtcpeerconnectionextension.rst | 5 +- classes/class_websocketmultiplayerpeer.rst | 1 + classes/class_websocketpeer.rst | 1 + classes/class_webxrinterface.rst | 1 + classes/class_window.rst | 1 + classes/class_workerthreadpool.rst | 1 + classes/class_world2d.rst | 1 + classes/class_world3d.rst | 1 + classes/class_worldboundaryshape2d.rst | 7 +- classes/class_worldboundaryshape3d.rst | 1 + classes/class_worldenvironment.rst | 1 + classes/class_x509certificate.rst | 1 + classes/class_xmlparser.rst | 1 + classes/class_xranchor3d.rst | 1 + classes/class_xrcamera3d.rst | 1 + classes/class_xrcontroller3d.rst | 1 + classes/class_xrinterface.rst | 1 + classes/class_xrinterfaceextension.rst | 1 + classes/class_xrnode3d.rst | 1 + classes/class_xrorigin3d.rst | 1 + classes/class_xrpose.rst | 1 + classes/class_xrpositionaltracker.rst | 1 + classes/class_xrserver.rst | 1 + classes/class_zippacker.rst | 1 + classes/class_zipreader.rst | 1 + classes/index.rst | 3 +- 885 files changed, 4627 insertions(+), 2713 deletions(-) rename classes/{class_gltfcollider.rst => class_gltfphysicsshape.rst} (57%) create mode 100644 classes/class_navigationmeshsourcegeometrydata3d.rst diff --git a/classes/class_@gdscript.rst b/classes/class_@gdscript.rst index b02122829b2d..a275778c9d6b 100644 --- a/classes/class_@gdscript.rst +++ b/classes/class_@gdscript.rst @@ -659,11 +659,19 @@ Mark the following property as assigned when the :ref:`Node` is read .. rst-class:: classref-annotation -**@rpc** **(** :ref:`String` mode="authority", :ref:`String` sync="call_remote", :ref:`String` transfer_mode="unreliable", :ref:`int` transfer_channel=0, ... **)** |vararg| +**@rpc** **(** :ref:`String` mode="authority", :ref:`String` sync="call_remote", :ref:`String` transfer_mode="unreliable", :ref:`int` transfer_channel=0 **)** Mark the following method for remote procedure calls. See :doc:`High-level multiplayer <../tutorials/networking/high_level_multiplayer>`. -The order of ``mode``, ``sync`` and ``transfer_mode`` does not matter and all arguments can be omitted, but ``transfer_channel`` always has to be the last argument. The accepted values for ``mode`` are ``"any_peer"`` or ``"authority"``, for ``sync`` are ``"call_remote"`` or ``"call_local"`` and for ``transfer_mode`` are ``"unreliable"``, ``"unreliable_ordered"`` or ``"reliable"``. +The accepted values: + +- for ``mode`` are ``"any_peer"`` or ``"authority"``; + +- for ``sync`` are ``"call_remote"`` or ``"call_local"``; + +- and for ``transfer_mode`` are ``"unreliable"``, ``"unreliable_ordered"``, or ``"reliable"``. + +The order of ``mode``, ``sync`` and ``transfer_mode`` does not matter, but values related to the same argument must not be used more than once. ``transfer_channel`` always has to be the 4th argument (you must specify 3 preceding arguments). :: @@ -1117,3 +1125,4 @@ Returns ``true`` if the given :ref:`Object`-derived class exists i .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_@globalscope.rst b/classes/class_@globalscope.rst index 1d6c8cb06d90..ecf1080256dd 100644 --- a/classes/class_@globalscope.rst +++ b/classes/class_@globalscope.rst @@ -3603,16 +3603,74 @@ Hints that a :ref:`Color` property should be edited without affecti :ref:`PropertyHint` **PROPERTY_HINT_TYPE_STRING** = ``23`` -Hint that a property represents a particular type. If a property is :ref:`TYPE_STRING`, allows to set a type from the create dialog. If you need to create an :ref:`Array` to contain elements of a specific type, the ``hint_string`` must encode nested types using ``":"`` and ``"/"`` for specifying :ref:`Resource` types. For instance: +If a property is :ref:`String`, hints that the property represents a particular type (class). This allows to select a type from the create dialog. The property will store the selected type as a string. -:: +If a property is :ref:`Array`, hints the editor how to show elements. The ``hint_string`` must encode nested types using ``":"`` and ``"/"``. + + +.. tabs:: + + .. code-tab:: gdscript + + # Array of elem_type. + hint_string = "%d:" % [elem_type] + hint_string = "%d/%d:%s" % [elem_type, elem_hint, elem_hint_string] + # Two-dimensional array of elem_type (array of arrays of elem_type). + hint_string = "%d:%d:" % [TYPE_ARRAY, elem_type] + hint_string = "%d:%d/%d:%s" % [TYPE_ARRAY, elem_type, elem_hint, elem_hint_string] + # Three-dimensional array of elem_type (array of arrays of arrays of elem_type). + hint_string = "%d:%d:%d:" % [TYPE_ARRAY, TYPE_ARRAY, elem_type] + hint_string = "%d:%d:%d/%d:%s" % [TYPE_ARRAY, TYPE_ARRAY, elem_type, elem_hint, elem_hint_string] + + .. code-tab:: csharp + + // Array of elemType. + hintString = $"{elemType:D}:"; + hintString = $"{elemType:}/{elemHint:D}:{elemHintString}"; + // Two-dimensional array of elemType (array of arrays of elemType). + hintString = $"{Variant.Type.Array:D}:{elemType:D}:"; + hintString = $"{Variant.Type.Array:D}:{elemType:D}/{elemHint:D}:{elemHintString}"; + // Three-dimensional array of elemType (array of arrays of arrays of elemType). + hintString = $"{Variant.Type.Array:D}:{Variant.Type.Array:D}:{elemType:D}:"; + hintString = $"{Variant.Type.Array:D}:{Variant.Type.Array:D}:{elemType:D}/{elemHint:D}:{elemHintString}"; + + + +Examples: - hint_string = "%s:" % [TYPE_INT] # Array of integers. - hint_string = "%s:%s:" % [TYPE_ARRAY, TYPE_REAL] # Two-dimensional array of floats. - hint_string = "%s/%s:Resource" % [TYPE_OBJECT, TYPE_OBJECT] # Array of resources. - hint_string = "%s:%s/%s:Resource" % [TYPE_ARRAY, TYPE_OBJECT, TYPE_OBJECT] # Two-dimensional array of resources. -\ **Note:** The final colon is required for properly detecting built-in types. +.. tabs:: + + .. code-tab:: gdscript + + hint_string = "%d:" % [TYPE_INT] # Array of integers. + hint_string = "%d/%d:1,10,1" % [TYPE_INT, PROPERTY_HINT_RANGE] # Array of integers (in range from 1 to 10). + hint_string = "%d/%d:Zero,One,Two" % [TYPE_INT, PROPERTY_HINT_ENUM] # Array of integers (an enum). + hint_string = "%d/%d:Zero,One,Three:3,Six:6" % [TYPE_INT, PROPERTY_HINT_ENUM] # Array of integers (an enum). + hint_string = "%d/%d:*.png" % [TYPE_STRING, PROPERTY_HINT_FILE] # Array of strings (file paths). + hint_string = "%d/%d:Texture2D" % [TYPE_OBJECT, PROPERTY_HINT_RESOURCE_TYPE] # Array of textures. + + hint_string = "%d:%d:" % [TYPE_ARRAY, TYPE_FLOAT] # Two-dimensional array of floats. + hint_string = "%d:%d/%d:" % [TYPE_ARRAY, TYPE_STRING, PROPERTY_HINT_MULTILINE_TEXT] # Two-dimensional array of multiline strings. + hint_string = "%d:%d/%d:-1,1,0.1" % [TYPE_ARRAY, TYPE_FLOAT, PROPERTY_HINT_RANGE] # Two-dimensional array of floats (in range from -1 to 1). + hint_string = "%d:%d/%d:Texture2D" % [TYPE_ARRAY, TYPE_OBJECT, PROPERTY_HINT_RESOURCE_TYPE] # Two-dimensional array of textures. + + .. code-tab:: csharp + + hintString = $"{Variant.Type.Int:D}/{PropertyHint.Range:D}:1,10,1"; // Array of integers (in range from 1 to 10). + hintString = $"{Variant.Type.Int:D}/{PropertyHint.Enum:D}:Zero,One,Two"; // Array of integers (an enum). + hintString = $"{Variant.Type.Int:D}/{PropertyHint.Enum:D}:Zero,One,Three:3,Six:6"; // Array of integers (an enum). + hintString = $"{Variant.Type.String:D}/{PropertyHint.File:D}:*.png"; // Array of strings (file paths). + hintString = $"{Variant.Type.Object:D}/{PropertyHint.ResourceType:D}:Texture2D"; // Array of textures. + + hintString = $"{Variant.Type.Array:D}:{Variant.Type.Float:D}:"; // Two-dimensional array of floats. + hintString = $"{Variant.Type.Array:D}:{Variant.Type.String:D}/{PropertyHint.MultilineText:D}:"; // Two-dimensional array of multiline strings. + hintString = $"{Variant.Type.Array:D}:{Variant.Type.Float:D}/{PropertyHint.Range:D}:-1,1,0.1"; // Two-dimensional array of floats (in range from -1 to 1). + hintString = $"{Variant.Type.Array:D}:{Variant.Type.Object:D}/{PropertyHint.ResourceType:D}:Texture2D"; // Two-dimensional array of textures. + + + +\ **Note:** The trailing colon is required for properly detecting built-in types. .. _class_@GlobalScope_constant_PROPERTY_HINT_NODE_PATH_TO_EDITED_NODE: @@ -6075,7 +6133,7 @@ Returns the minimum of two :ref:`int` values. :ref:`float` **move_toward** **(** :ref:`float` from, :ref:`float` to, :ref:`float` delta **)** -Moves ``from`` toward ``to`` by the ``delta`` value. +Moves ``from`` toward ``to`` by the ``delta`` amount. Will not go past ``to``. Use a negative ``delta`` value to move away. @@ -6083,6 +6141,7 @@ Use a negative ``delta`` value to move away. move_toward(5, 10, 4) # Returns 9 move_toward(10, 5, 4) # Returns 6 + move_toward(5, 10, 9) # Returns 10 move_toward(10, 5, -1.5) # Returns 11.5 .. rst-class:: classref-item-separator @@ -7108,6 +7167,8 @@ Prints: "b": 2 } +\ **Note:** Converting :ref:`Signal` or :ref:`Callable` is not supported and will result in an empty value for these types, regardless of their data. + .. rst-class:: classref-item-separator ---- @@ -7206,3 +7267,4 @@ Wraps the integer ``value`` between ``min`` and ``max``. Can be used for creatin .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_aabb.rst b/classes/class_aabb.rst index ea5ab670e960..9898bce32283 100644 --- a/classes/class_aabb.rst +++ b/classes/class_aabb.rst @@ -603,3 +603,4 @@ Returns ``true`` if the AABBs are exactly equal. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_acceptdialog.rst b/classes/class_acceptdialog.rst index b7742ded138b..93961f13b835 100644 --- a/classes/class_acceptdialog.rst +++ b/classes/class_acceptdialog.rst @@ -344,3 +344,4 @@ The panel that fills the background of the window. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_aescontext.rst b/classes/class_aescontext.rst index 7face9d113d6..b28ed7eddaee 100644 --- a/classes/class_aescontext.rst +++ b/classes/class_aescontext.rst @@ -232,3 +232,4 @@ Run the desired operation for this AES context. Will return a :ref:`PackedByteAr .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_animatablebody2d.rst b/classes/class_animatablebody2d.rst index 88eafe26ae43..1d1ade07434d 100644 --- a/classes/class_animatablebody2d.rst +++ b/classes/class_animatablebody2d.rst @@ -63,3 +63,4 @@ If ``true``, the body's movement will be synchronized to the physics frame. This .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_animatablebody3d.rst b/classes/class_animatablebody3d.rst index 38153de4ecb1..fbb83dc160cd 100644 --- a/classes/class_animatablebody3d.rst +++ b/classes/class_animatablebody3d.rst @@ -74,3 +74,4 @@ If ``true``, the body's movement will be synchronized to the physics frame. This .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_animatedsprite2d.rst b/classes/class_animatedsprite2d.rst index 156b3318084f..14694f60e1b5 100644 --- a/classes/class_animatedsprite2d.rst +++ b/classes/class_animatedsprite2d.rst @@ -446,3 +446,4 @@ Stops the currently playing animation. The animation position is reset to ``0`` .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_animatedsprite3d.rst b/classes/class_animatedsprite3d.rst index 23d039c2b5aa..00d764ef9172 100644 --- a/classes/class_animatedsprite3d.rst +++ b/classes/class_animatedsprite3d.rst @@ -368,3 +368,4 @@ Stops the currently playing animation. The animation position is reset to ``0`` .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_animatedtexture.rst b/classes/class_animatedtexture.rst index 8e2f91c84b78..32877b2fa79c 100644 --- a/classes/class_animatedtexture.rst +++ b/classes/class_animatedtexture.rst @@ -239,3 +239,4 @@ You can define any number of textures up to :ref:`MAX_FRAMES`) of a val .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_animationlibrary.rst b/classes/class_animationlibrary.rst index 33c9e9c6779a..58047aa5f916 100644 --- a/classes/class_animationlibrary.rst +++ b/classes/class_animationlibrary.rst @@ -219,3 +219,4 @@ Changes the key of the :ref:`Animation` associated with the key .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_animationnode.rst b/classes/class_animationnode.rst index 23f52a02932d..0b1e89fa87f5 100644 --- a/classes/class_animationnode.rst +++ b/classes/class_animationnode.rst @@ -475,3 +475,4 @@ Sets a custom parameter. These are used as local memory, because resources can b .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_animationnodeadd2.rst b/classes/class_animationnodeadd2.rst index e365005da7e2..64a130851eb7 100644 --- a/classes/class_animationnodeadd2.rst +++ b/classes/class_animationnodeadd2.rst @@ -38,3 +38,4 @@ Tutorials .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_animationnodeadd3.rst b/classes/class_animationnodeadd3.rst index 78109d78fc44..a925fdb152df 100644 --- a/classes/class_animationnodeadd3.rst +++ b/classes/class_animationnodeadd3.rst @@ -46,3 +46,4 @@ Tutorials .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_animationnodeanimation.rst b/classes/class_animationnodeanimation.rst index fa57e5c61615..0402128cad77 100644 --- a/classes/class_animationnodeanimation.rst +++ b/classes/class_animationnodeanimation.rst @@ -122,3 +122,4 @@ Determines the playback direction of the animation. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_animationnodeblend2.rst b/classes/class_animationnodeblend2.rst index abceca448ac9..f9cee33de6b1 100644 --- a/classes/class_animationnodeblend2.rst +++ b/classes/class_animationnodeblend2.rst @@ -40,3 +40,4 @@ Tutorials .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_animationnodeblend3.rst b/classes/class_animationnodeblend3.rst index 743ee5a56bf5..918df1c36527 100644 --- a/classes/class_animationnodeblend3.rst +++ b/classes/class_animationnodeblend3.rst @@ -44,3 +44,4 @@ Tutorials .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_animationnodeblendspace1d.rst b/classes/class_animationnodeblendspace1d.rst index 0d9f83843151..6401bd1796be 100644 --- a/classes/class_animationnodeblendspace1d.rst +++ b/classes/class_animationnodeblendspace1d.rst @@ -321,3 +321,4 @@ Updates the position of the point at index ``point`` on the blend axis. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_animationnodeblendspace2d.rst b/classes/class_animationnodeblendspace2d.rst index 7638c947eddb..3c18fb7f6dbc 100644 --- a/classes/class_animationnodeblendspace2d.rst +++ b/classes/class_animationnodeblendspace2d.rst @@ -434,3 +434,4 @@ Updates the position of the point at index ``point`` on the blend axis. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_animationnodeblendtree.rst b/classes/class_animationnodeblendtree.rst index 48b1d6cec75f..3f2678462c8e 100644 --- a/classes/class_animationnodeblendtree.rst +++ b/classes/class_animationnodeblendtree.rst @@ -285,3 +285,4 @@ Modifies the position of a sub animation node. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_animationnodeoneshot.rst b/classes/class_animationnodeoneshot.rst index e28b64332daa..8ce199e9188a 100644 --- a/classes/class_animationnodeoneshot.rst +++ b/classes/class_animationnodeoneshot.rst @@ -329,3 +329,4 @@ The blend type. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_animationnodeoutput.rst b/classes/class_animationnodeoutput.rst index 853c81d75203..e2a42ed16b83 100644 --- a/classes/class_animationnodeoutput.rst +++ b/classes/class_animationnodeoutput.rst @@ -38,3 +38,4 @@ Tutorials .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_animationnodestatemachine.rst b/classes/class_animationnodestatemachine.rst index 520a4021f013..dc2acc3a16d4 100644 --- a/classes/class_animationnodestatemachine.rst +++ b/classes/class_animationnodestatemachine.rst @@ -447,3 +447,4 @@ Sets the animation node's coordinates. Used for display in the editor. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_animationnodestatemachineplayback.rst b/classes/class_animationnodestatemachineplayback.rst index 412ac528b5c0..95f1f16cb12d 100644 --- a/classes/class_animationnodestatemachineplayback.rst +++ b/classes/class_animationnodestatemachineplayback.rst @@ -228,3 +228,4 @@ If ``reset_on_teleport`` is ``true``, the animation is played from the beginning .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_animationnodestatemachinetransition.rst b/classes/class_animationnodestatemachinetransition.rst index 59d429e168a2..97ab5127beef 100644 --- a/classes/class_animationnodestatemachinetransition.rst +++ b/classes/class_animationnodestatemachinetransition.rst @@ -306,3 +306,4 @@ The time to cross-fade between this state and the next. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_animationnodesub2.rst b/classes/class_animationnodesub2.rst index 7fdcd1b35c8f..d5c78a348946 100644 --- a/classes/class_animationnodesub2.rst +++ b/classes/class_animationnodesub2.rst @@ -40,3 +40,4 @@ Tutorials .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_animationnodesync.rst b/classes/class_animationnodesync.rst index b6afa72d80d6..61f12ed8e1b4 100644 --- a/classes/class_animationnodesync.rst +++ b/classes/class_animationnodesync.rst @@ -72,3 +72,4 @@ If ``true``, forcing the blended animations to advance frame. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_animationnodetimescale.rst b/classes/class_animationnodetimescale.rst index 6c68ad8129f6..ae36d63988f6 100644 --- a/classes/class_animationnodetimescale.rst +++ b/classes/class_animationnodetimescale.rst @@ -36,3 +36,4 @@ Tutorials .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_animationnodetimeseek.rst b/classes/class_animationnodetimeseek.rst index 4a4de14776f6..dff81716df6c 100644 --- a/classes/class_animationnodetimeseek.rst +++ b/classes/class_animationnodetimeseek.rst @@ -61,3 +61,4 @@ Tutorials .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_animationnodetransition.rst b/classes/class_animationnodetransition.rst index 3bcea87e9089..f4b40e2dd5b3 100644 --- a/classes/class_animationnodetransition.rst +++ b/classes/class_animationnodetransition.rst @@ -237,3 +237,4 @@ If ``true``, the destination animation is restarted when the animation transitio .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_animationplayer.rst b/classes/class_animationplayer.rst index 57ac31c3745f..fedf56ff130e 100644 --- a/classes/class_animationplayer.rst +++ b/classes/class_animationplayer.rst @@ -244,7 +244,7 @@ enum **AnimationProcessCallback**: :ref:`AnimationProcessCallback` **ANIMATION_PROCESS_PHYSICS** = ``0`` -Process animation during the physics process. This is especially useful when animating physics bodies. +Process animation during physics frames (see :ref:`Node.NOTIFICATION_INTERNAL_PHYSICS_PROCESS`). This is especially useful when animating physics bodies. .. _class_AnimationPlayer_constant_ANIMATION_PROCESS_IDLE: @@ -252,7 +252,7 @@ Process animation during the physics process. This is especially useful when ani :ref:`AnimationProcessCallback` **ANIMATION_PROCESS_IDLE** = ``1`` -Process animation during the idle process. +Process animation during process frames (see :ref:`Node.NOTIFICATION_INTERNAL_PROCESS`). .. _class_AnimationPlayer_constant_ANIMATION_PROCESS_MANUAL: @@ -908,3 +908,4 @@ If ``keep_state`` is ``true``, the animation state is not updated visually. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_animationrootnode.rst b/classes/class_animationrootnode.rst index 52a9089c52d7..92d035caf131 100644 --- a/classes/class_animationrootnode.rst +++ b/classes/class_animationrootnode.rst @@ -38,3 +38,4 @@ Tutorials .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_animationtree.rst b/classes/class_animationtree.rst index edfce45383bc..27de3d5677c8 100644 --- a/classes/class_animationtree.rst +++ b/classes/class_animationtree.rst @@ -148,7 +148,7 @@ enum **AnimationProcessCallback**: :ref:`AnimationProcessCallback` **ANIMATION_PROCESS_PHYSICS** = ``0`` -The animations will progress during the physics frame (i.e. :ref:`Node._physics_process`). +The animations will progress during physics frames (see :ref:`Node.NOTIFICATION_INTERNAL_PHYSICS_PROCESS`). .. _class_AnimationTree_constant_ANIMATION_PROCESS_IDLE: @@ -156,7 +156,7 @@ The animations will progress during the physics frame (i.e. :ref:`Node._physics_ :ref:`AnimationProcessCallback` **ANIMATION_PROCESS_IDLE** = ``1`` -The animations will progress during the idle frame (i.e. :ref:`Node._process`). +The animations will progress during process frames (see :ref:`Node.NOTIFICATION_INTERNAL_PROCESS`). .. _class_AnimationTree_constant_ANIMATION_PROCESS_MANUAL: @@ -552,3 +552,4 @@ However, if the animation loops, an unintended discrete change may occur, so thi .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_area2d.rst b/classes/class_area2d.rst index 9cef9783d954..1a3594d04308 100644 --- a/classes/class_area2d.rst +++ b/classes/class_area2d.rst @@ -655,3 +655,4 @@ The ``body`` argument can either be a :ref:`PhysicsBody2D` .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_area3d.rst b/classes/class_area3d.rst index 05a46ecf6744..973b15c10fa5 100644 --- a/classes/class_area3d.rst +++ b/classes/class_area3d.rst @@ -788,3 +788,4 @@ The ``body`` argument can either be a :ref:`PhysicsBody3D` .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_array.rst b/classes/class_array.rst index 9c16314554aa..a149653ccde1 100644 --- a/classes/class_array.rst +++ b/classes/class_array.rst @@ -1029,6 +1029,8 @@ Removes an element from the array by index. If the index does not exist in the a \ **Note:** On large arrays, this method will be slower if the removed element is close to the beginning of the array (index 0). This is because all elements placed after the removed element have to be reindexed. +\ **Note:** ``position`` cannot be negative. To remove an element relative to the end of the array, use ``arr.remove_at(arr.size() - (i + 1))``. To remove the last element from the array without returning the value, use ``arr.resize(arr.size() - 1)``. + .. rst-class:: classref-item-separator ---- @@ -1298,3 +1300,4 @@ Returns a reference to the element of type :ref:`Variant` at the .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_arraymesh.rst b/classes/class_arraymesh.rst index 47de0c51c1eb..00e6b5d6e8a6 100644 --- a/classes/class_arraymesh.rst +++ b/classes/class_arraymesh.rst @@ -103,45 +103,45 @@ Methods .. table:: :widths: auto - +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`add_blend_shape` **(** :ref:`StringName` name **)** | - +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`add_surface_from_arrays` **(** :ref:`PrimitiveType` primitive, :ref:`Array` arrays, :ref:`Array[]` blend_shapes=[], :ref:`Dictionary` lods={}, :ref:`ArrayFormat` flags=0 **)** | - +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`clear_blend_shapes` **(** **)** | - +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`clear_surfaces` **(** **)** | - +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_blend_shape_count` **(** **)** |const| | - +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`StringName` | :ref:`get_blend_shape_name` **(** :ref:`int` index **)** |const| | - +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Error` | :ref:`lightmap_unwrap` **(** :ref:`Transform3D` transform, :ref:`float` texel_size **)** | - +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`regen_normal_maps` **(** **)** | - +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`set_blend_shape_name` **(** :ref:`int` index, :ref:`StringName` name **)** | - +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`surface_find_by_name` **(** :ref:`String` name **)** |const| | - +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`surface_get_array_index_len` **(** :ref:`int` surf_idx **)** |const| | - +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`surface_get_array_len` **(** :ref:`int` surf_idx **)** |const| | - +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`ArrayFormat` | :ref:`surface_get_format` **(** :ref:`int` surf_idx **)** |const| | - +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`surface_get_name` **(** :ref:`int` surf_idx **)** |const| | - +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PrimitiveType` | :ref:`surface_get_primitive_type` **(** :ref:`int` surf_idx **)** |const| | - +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`surface_set_name` **(** :ref:`int` surf_idx, :ref:`String` name **)** | - +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`surface_update_attribute_region` **(** :ref:`int` surf_idx, :ref:`int` offset, :ref:`PackedByteArray` data **)** | - +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`surface_update_skin_region` **(** :ref:`int` surf_idx, :ref:`int` offset, :ref:`PackedByteArray` data **)** | - +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`surface_update_vertex_region` **(** :ref:`int` surf_idx, :ref:`int` offset, :ref:`PackedByteArray` data **)** | - +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +---------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`add_blend_shape` **(** :ref:`StringName` name **)** | + +---------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`add_surface_from_arrays` **(** :ref:`PrimitiveType` primitive, :ref:`Array` arrays, :ref:`Array[]` blend_shapes=[], :ref:`Dictionary` lods={}, |bitfield|\<:ref:`ArrayFormat`\> flags=0 **)** | + +---------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`clear_blend_shapes` **(** **)** | + +---------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`clear_surfaces` **(** **)** | + +---------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_blend_shape_count` **(** **)** |const| | + +---------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`StringName` | :ref:`get_blend_shape_name` **(** :ref:`int` index **)** |const| | + +---------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Error` | :ref:`lightmap_unwrap` **(** :ref:`Transform3D` transform, :ref:`float` texel_size **)** | + +---------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`regen_normal_maps` **(** **)** | + +---------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`set_blend_shape_name` **(** :ref:`int` index, :ref:`StringName` name **)** | + +---------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`surface_find_by_name` **(** :ref:`String` name **)** |const| | + +---------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`surface_get_array_index_len` **(** :ref:`int` surf_idx **)** |const| | + +---------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`surface_get_array_len` **(** :ref:`int` surf_idx **)** |const| | + +---------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |bitfield|\<:ref:`ArrayFormat`\> | :ref:`surface_get_format` **(** :ref:`int` surf_idx **)** |const| | + +---------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`surface_get_name` **(** :ref:`int` surf_idx **)** |const| | + +---------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PrimitiveType` | :ref:`surface_get_primitive_type` **(** :ref:`int` surf_idx **)** |const| | + +---------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`surface_set_name` **(** :ref:`int` surf_idx, :ref:`String` name **)** | + +---------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`surface_update_attribute_region` **(** :ref:`int` surf_idx, :ref:`int` offset, :ref:`PackedByteArray` data **)** | + +---------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`surface_update_skin_region` **(** :ref:`int` surf_idx, :ref:`int` offset, :ref:`PackedByteArray` data **)** | + +---------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`surface_update_vertex_region` **(** :ref:`int` surf_idx, :ref:`int` offset, :ref:`PackedByteArray` data **)** | + +---------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator @@ -224,7 +224,7 @@ Adds name for a blend shape that will be added with :ref:`add_surface_from_array .. rst-class:: classref-method -void **add_surface_from_arrays** **(** :ref:`PrimitiveType` primitive, :ref:`Array` arrays, :ref:`Array[]` blend_shapes=[], :ref:`Dictionary` lods={}, :ref:`ArrayFormat` flags=0 **)** +void **add_surface_from_arrays** **(** :ref:`PrimitiveType` primitive, :ref:`Array` arrays, :ref:`Array[]` blend_shapes=[], :ref:`Dictionary` lods={}, |bitfield|\<:ref:`ArrayFormat`\> flags=0 **)** Creates a new surface. :ref:`Mesh.get_surface_count` will become the ``surf_idx`` for this new surface. @@ -368,7 +368,7 @@ Returns the length in vertices of the vertex array in the requested surface (see .. rst-class:: classref-method -:ref:`ArrayFormat` **surface_get_format** **(** :ref:`int` surf_idx **)** |const| +|bitfield|\<:ref:`ArrayFormat`\> **surface_get_format** **(** :ref:`int` surf_idx **)** |const| Returns the format mask of the requested surface (see :ref:`add_surface_from_arrays`). @@ -456,3 +456,4 @@ void **surface_update_vertex_region** **(** :ref:`int` surf_idx, :ref .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_arrayoccluder3d.rst b/classes/class_arrayoccluder3d.rst index 967071579214..aba0e729b9e0 100644 --- a/classes/class_arrayoccluder3d.rst +++ b/classes/class_arrayoccluder3d.rst @@ -115,3 +115,4 @@ Sets :ref:`indices` and :ref:`vertices`. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_audiobuslayout.rst b/classes/class_audiobuslayout.rst index 368a676f6d99..3ef224170c86 100644 --- a/classes/class_audiobuslayout.rst +++ b/classes/class_audiobuslayout.rst @@ -27,3 +27,4 @@ Stores position, muting, solo, bypass, effects, effect position, volume, and the .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_audioeffect.rst b/classes/class_audioeffect.rst index d97e8bb6c2e4..d103cbcc5a5a 100644 --- a/classes/class_audioeffect.rst +++ b/classes/class_audioeffect.rst @@ -67,3 +67,4 @@ Method Descriptions .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_audioeffectamplify.rst b/classes/class_audioeffectamplify.rst index 9c5d0d6ab510..e115333cb7bb 100644 --- a/classes/class_audioeffectamplify.rst +++ b/classes/class_audioeffectamplify.rst @@ -68,3 +68,4 @@ Amount of amplification in decibels. Positive values make the sound louder, nega .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_audioeffectbandlimitfilter.rst b/classes/class_audioeffectbandlimitfilter.rst index f8e28993324a..eecb2230fceb 100644 --- a/classes/class_audioeffectbandlimitfilter.rst +++ b/classes/class_audioeffectbandlimitfilter.rst @@ -34,3 +34,4 @@ Tutorials .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_audioeffectbandpassfilter.rst b/classes/class_audioeffectbandpassfilter.rst index 662d4b86dcd9..b82d4b4eb323 100644 --- a/classes/class_audioeffectbandpassfilter.rst +++ b/classes/class_audioeffectbandpassfilter.rst @@ -34,3 +34,4 @@ Tutorials .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_audioeffectcapture.rst b/classes/class_audioeffectcapture.rst index 1c1acbcbb683..5fbea6185147 100644 --- a/classes/class_audioeffectcapture.rst +++ b/classes/class_audioeffectcapture.rst @@ -189,3 +189,4 @@ Returns the number of audio frames inserted from the audio bus. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_audioeffectchorus.rst b/classes/class_audioeffectchorus.rst index bfeeb14fb68e..c54e8ad00137 100644 --- a/classes/class_audioeffectchorus.rst +++ b/classes/class_audioeffectchorus.rst @@ -769,3 +769,4 @@ void **set_voice_rate_hz** **(** :ref:`int` voice_idx, :ref:`float` assigned to th :ref:`int` **get_bus_index** **(** :ref:`StringName` bus_name **)** |const| -Returns the index of the bus with the name ``bus_name``. +Returns the index of the bus with the name ``bus_name``. Returns ``-1`` if no bus with the specified name exist. .. rst-class:: classref-item-separator @@ -764,3 +764,4 @@ Unlocks the audio driver's main loop. (After locking it, you should always unloc .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_audiostream.rst b/classes/class_audiostream.rst index ddb987512fe7..1abf82d54410 100644 --- a/classes/class_audiostream.rst +++ b/classes/class_audiostream.rst @@ -195,3 +195,4 @@ Returns true if this audio stream only supports monophonic playback, or false if .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_audiostreamgenerator.rst b/classes/class_audiostreamgenerator.rst index 67e243f06327..d6928f2bd88d 100644 --- a/classes/class_audiostreamgenerator.rst +++ b/classes/class_audiostreamgenerator.rst @@ -119,3 +119,4 @@ According to the `Nyquist-Shannon sampling theorem ` **DOPPLER_TRACKING_IDLE_STEP** = ``1`` -Executes doppler tracking in idle step. +Executes doppler tracking during process frames (see :ref:`Node.NOTIFICATION_INTERNAL_PROCESS`). .. _class_AudioStreamPlayer3D_constant_DOPPLER_TRACKING_PHYSICS_STEP: @@ -202,7 +202,7 @@ Executes doppler tracking in idle step. :ref:`DopplerTracking` **DOPPLER_TRACKING_PHYSICS_STEP** = ``2`` -Executes doppler tracking in physics step. +Executes doppler tracking during physics frames (see :ref:`Node.NOTIFICATION_INTERNAL_PHYSICS_PROCESS`). .. rst-class:: classref-section-separator @@ -633,3 +633,4 @@ Stops the audio. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_audiostreampolyphonic.rst b/classes/class_audiostreampolyphonic.rst index 1c54877e26c6..e69cff15630a 100644 --- a/classes/class_audiostreampolyphonic.rst +++ b/classes/class_audiostreampolyphonic.rst @@ -63,3 +63,4 @@ Maximum amount of simultaneous streams that can be played. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_audiostreamrandomizer.rst b/classes/class_audiostreamrandomizer.rst index 7ed58e09a5e7..7b6df38cf6b8 100644 --- a/classes/class_audiostreamrandomizer.rst +++ b/classes/class_audiostreamrandomizer.rst @@ -270,3 +270,4 @@ Set the probability weight of the stream at the specified index. The higher this .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_audiostreamwav.rst b/classes/class_audiostreamwav.rst index b53002aacd65..c5e0d1233995 100644 --- a/classes/class_audiostreamwav.rst +++ b/classes/class_audiostreamwav.rst @@ -295,3 +295,4 @@ Saves the AudioStreamWAV as a WAV file to ``path``. Samples with IMA ADPCM forma .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_backbuffercopy.rst b/classes/class_backbuffercopy.rst index 43308c2b5a8a..0869c24e121b 100644 --- a/classes/class_backbuffercopy.rst +++ b/classes/class_backbuffercopy.rst @@ -121,3 +121,4 @@ The area covered by the **BackBufferCopy**. Only used if :ref:`copy_mode` | :ref:`action_mode` | ``1`` | - +-----------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------+ - | :ref:`ButtonGroup` | :ref:`button_group` | | - +-----------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------+ - | :ref:`MouseButtonMask` | :ref:`button_mask` | ``1`` | - +-----------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------+ - | :ref:`bool` | :ref:`button_pressed` | ``false`` | - +-----------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------+ - | :ref:`bool` | :ref:`disabled` | ``false`` | - +-----------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------+ - | :ref:`FocusMode` | focus_mode | ``2`` (overrides :ref:`Control`) | - +-----------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------+ - | :ref:`bool` | :ref:`keep_pressed_outside` | ``false`` | - +-----------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------+ - | :ref:`Shortcut` | :ref:`shortcut` | | - +-----------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------+ - | :ref:`bool` | :ref:`shortcut_feedback` | ``true`` | - +-----------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------+ - | :ref:`bool` | :ref:`shortcut_in_tooltip` | ``true`` | - +-----------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------+ - | :ref:`bool` | :ref:`toggle_mode` | ``false`` | - +-----------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------+ + +-------------------------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------+ + | :ref:`ActionMode` | :ref:`action_mode` | ``1`` | + +-------------------------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------+ + | :ref:`ButtonGroup` | :ref:`button_group` | | + +-------------------------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------+ + | |bitfield|\<:ref:`MouseButtonMask`\> | :ref:`button_mask` | ``1`` | + +-------------------------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------+ + | :ref:`bool` | :ref:`button_pressed` | ``false`` | + +-------------------------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------+ + | :ref:`bool` | :ref:`disabled` | ``false`` | + +-------------------------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------+ + | :ref:`FocusMode` | focus_mode | ``2`` (overrides :ref:`Control`) | + +-------------------------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------+ + | :ref:`bool` | :ref:`keep_pressed_outside` | ``false`` | + +-------------------------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------+ + | :ref:`Shortcut` | :ref:`shortcut` | | + +-------------------------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------+ + | :ref:`bool` | :ref:`shortcut_feedback` | ``true`` | + +-------------------------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------+ + | :ref:`bool` | :ref:`shortcut_in_tooltip` | ``true`` | + +-------------------------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------+ + | :ref:`bool` | :ref:`toggle_mode` | ``false`` | + +-------------------------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------+ .. rst-class:: classref-reftable-group @@ -260,12 +260,12 @@ The :ref:`ButtonGroup` associated with the button. Not to be .. rst-class:: classref-property -:ref:`MouseButtonMask` **button_mask** = ``1`` +|bitfield|\<:ref:`MouseButtonMask`\> **button_mask** = ``1`` .. rst-class:: classref-property-setget -- void **set_button_mask** **(** :ref:`MouseButtonMask` value **)** -- :ref:`MouseButtonMask` **get_button_mask** **(** **)** +- void **set_button_mask** **(** |bitfield|\<:ref:`MouseButtonMask`\> value **)** +- |bitfield|\<:ref:`MouseButtonMask`\> **get_button_mask** **(** **)** Binary mask to choose which mouse buttons this button will respond to. @@ -467,3 +467,4 @@ Changes the :ref:`button_pressed` stat .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_basematerial3d.rst b/classes/class_basematerial3d.rst index e9223fd77ac8..6acb8e27126a 100644 --- a/classes/class_basematerial3d.rst +++ b/classes/class_basematerial3d.rst @@ -3465,3 +3465,4 @@ Sets the texture for the slot specified by ``param``. See :ref:`TextureParam` for the **Button**. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_buttongroup.rst b/classes/class_buttongroup.rst index 43d2ec067fc9..2905b6bdf73b 100644 --- a/classes/class_buttongroup.rst +++ b/classes/class_buttongroup.rst @@ -125,3 +125,4 @@ Returns the current pressed button. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_callable.rst b/classes/class_callable.rst index e435574a69a9..6dedde31a8c0 100644 --- a/classes/class_callable.rst +++ b/classes/class_callable.rst @@ -68,6 +68,19 @@ In GDScript, it's possible to create lambda functions within a method. Lambda fu # Prints "Attack!", when the button_pressed signal is emitted. button_pressed.connect(func(): print("Attack!")) +\ **Note:** Methods of native types such as :ref:`Signal`, :ref:`Array`, or :ref:`Dictionary` are not of type **Callable** in order to avoid unnecessary overhead. If you need to pass those methods as **Callable**, use a lambda function as a wrapper. + +:: + + func _init(): + var my_dictionary = { "hello": "world" } + + # This will not work, `clear` is not a callable. + create_tween().tween_callback(my_dictionary.clear) + + # This will work, as lambdas are custom callables. + create_tween().tween_callback(func(): my_dictionary.clear()) + .. rst-class:: classref-reftable-group Constructors @@ -236,13 +249,15 @@ Calls the method represented by this **Callable**. Arguments can be passed and s void **call_deferred** **(** ... **)** |vararg| |const| -Calls the method represented by this **Callable** in deferred mode, i.e. during the idle frame. Arguments can be passed and should match the method's signature. +Calls the method represented by this **Callable** in deferred mode, i.e. at the end of the current frame. Arguments can be passed and should match the method's signature. :: func _ready(): grab_focus.call_deferred() +See also :ref:`Object.call_deferred`. + .. rst-class:: classref-item-separator ---- @@ -456,3 +471,4 @@ Returns ``true`` if both **Callable**\ s invoke the same custom target. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_callbacktweener.rst b/classes/class_callbacktweener.rst index 9b957aeaaa7b..60cfc9cf793f 100644 --- a/classes/class_callbacktweener.rst +++ b/classes/class_callbacktweener.rst @@ -65,3 +65,4 @@ Makes the callback call delayed by given time in seconds. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_camera2d.rst b/classes/class_camera2d.rst index 52fee602f6cd..440fc6a0e403 100644 --- a/classes/class_camera2d.rst +++ b/classes/class_camera2d.rst @@ -181,7 +181,7 @@ enum **Camera2DProcessCallback**: :ref:`Camera2DProcessCallback` **CAMERA2D_PROCESS_PHYSICS** = ``0`` -The camera updates with the ``_physics_process`` callback. +The camera updates during physics frames (see :ref:`Node.NOTIFICATION_INTERNAL_PHYSICS_PROCESS`). .. _class_Camera2D_constant_CAMERA2D_PROCESS_IDLE: @@ -189,7 +189,7 @@ The camera updates with the ``_physics_process`` callback. :ref:`Camera2DProcessCallback` **CAMERA2D_PROCESS_IDLE** = ``1`` -The camera updates with the ``_process`` callback. +The camera updates during process frames (see :ref:`Node.NOTIFICATION_INTERNAL_PROCESS`). .. rst-class:: classref-section-separator @@ -818,3 +818,4 @@ Sets the camera limit for the specified :ref:`Side`. See .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_camera3d.rst b/classes/class_camera3d.rst index eedde2e4f5f1..3d4834ee0f74 100644 --- a/classes/class_camera3d.rst +++ b/classes/class_camera3d.rst @@ -714,3 +714,4 @@ Returns the 2D coordinate in the :ref:`Viewport` rectangle that .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_cameraattributes.rst b/classes/class_cameraattributes.rst index 6dd5c3d31f4b..169b42d3693c 100644 --- a/classes/class_cameraattributes.rst +++ b/classes/class_cameraattributes.rst @@ -145,3 +145,4 @@ Sensitivity of camera sensors, measured in ISO. A higher sensitivity results in .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_cameraattributesphysical.rst b/classes/class_cameraattributesphysical.rst index a6f12a782922..6acbb6fb125d 100644 --- a/classes/class_cameraattributesphysical.rst +++ b/classes/class_cameraattributesphysical.rst @@ -233,3 +233,4 @@ Returns the vertical field of view that corresponds to the :ref:`frustum_focal_l .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_cameraattributespractical.rst b/classes/class_cameraattributespractical.rst index 7ec62ac8d3f9..64eeae4e7ef3 100644 --- a/classes/class_cameraattributespractical.rst +++ b/classes/class_cameraattributespractical.rst @@ -219,3 +219,4 @@ When positive, distance over which blur effect will scale from 0 to :ref:`dof_bl .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_camerafeed.rst b/classes/class_camerafeed.rst index 77ccc28c462f..c4959eb44a61 100644 --- a/classes/class_camerafeed.rst +++ b/classes/class_camerafeed.rst @@ -234,3 +234,4 @@ Returns the position of camera on the device. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_cameraserver.rst b/classes/class_cameraserver.rst index 82a58f862e4d..eecbd3e08771 100644 --- a/classes/class_cameraserver.rst +++ b/classes/class_cameraserver.rst @@ -192,3 +192,4 @@ Removes the specified camera ``feed``. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_cameratexture.rst b/classes/class_cameratexture.rst index 93ef91ab7acb..49ec8a2c371e 100644 --- a/classes/class_cameratexture.rst +++ b/classes/class_cameratexture.rst @@ -103,3 +103,4 @@ Which image within the :ref:`CameraFeed` we want access to, im .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_canvasgroup.rst b/classes/class_canvasgroup.rst index 290623b79209..0a8e5bf56c3d 100644 --- a/classes/class_canvasgroup.rst +++ b/classes/class_canvasgroup.rst @@ -120,3 +120,4 @@ If ``true``, calculates mipmaps for the backbuffer before drawing the **CanvasGr .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_canvasitem.rst b/classes/class_canvasitem.rst index ca646c126f3e..71c44eed8dd2 100644 --- a/classes/class_canvasitem.rst +++ b/classes/class_canvasitem.rst @@ -88,121 +88,121 @@ Methods .. table:: :widths: auto - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_draw` **(** **)** |virtual| | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`draw_animation_slice` **(** :ref:`float` animation_length, :ref:`float` slice_begin, :ref:`float` slice_end, :ref:`float` offset=0.0 **)** | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`draw_arc` **(** :ref:`Vector2` center, :ref:`float` radius, :ref:`float` start_angle, :ref:`float` end_angle, :ref:`int` point_count, :ref:`Color` color, :ref:`float` width=-1.0, :ref:`bool` antialiased=false **)** | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`draw_char` **(** :ref:`Font` font, :ref:`Vector2` pos, :ref:`String` char, :ref:`int` font_size=16, :ref:`Color` modulate=Color(1, 1, 1, 1) **)** |const| | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`draw_char_outline` **(** :ref:`Font` font, :ref:`Vector2` pos, :ref:`String` char, :ref:`int` font_size=16, :ref:`int` size=-1, :ref:`Color` modulate=Color(1, 1, 1, 1) **)** |const| | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`draw_circle` **(** :ref:`Vector2` position, :ref:`float` radius, :ref:`Color` color **)** | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`draw_colored_polygon` **(** :ref:`PackedVector2Array` points, :ref:`Color` color, :ref:`PackedVector2Array` uvs=PackedVector2Array(), :ref:`Texture2D` texture=null **)** | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`draw_dashed_line` **(** :ref:`Vector2` from, :ref:`Vector2` to, :ref:`Color` color, :ref:`float` width=-1.0, :ref:`float` dash=2.0, :ref:`bool` aligned=true **)** | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`draw_end_animation` **(** **)** | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`draw_lcd_texture_rect_region` **(** :ref:`Texture2D` texture, :ref:`Rect2` rect, :ref:`Rect2` src_rect, :ref:`Color` modulate=Color(1, 1, 1, 1) **)** | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`draw_line` **(** :ref:`Vector2` from, :ref:`Vector2` to, :ref:`Color` color, :ref:`float` width=-1.0, :ref:`bool` antialiased=false **)** | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`draw_mesh` **(** :ref:`Mesh` mesh, :ref:`Texture2D` texture, :ref:`Transform2D` transform=Transform2D(1, 0, 0, 1, 0, 0), :ref:`Color` modulate=Color(1, 1, 1, 1) **)** | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`draw_msdf_texture_rect_region` **(** :ref:`Texture2D` texture, :ref:`Rect2` rect, :ref:`Rect2` src_rect, :ref:`Color` modulate=Color(1, 1, 1, 1), :ref:`float` outline=0.0, :ref:`float` pixel_range=4.0, :ref:`float` scale=1.0 **)** | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`draw_multiline` **(** :ref:`PackedVector2Array` points, :ref:`Color` color, :ref:`float` width=-1.0 **)** | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`draw_multiline_colors` **(** :ref:`PackedVector2Array` points, :ref:`PackedColorArray` colors, :ref:`float` width=-1.0 **)** | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`draw_multiline_string` **(** :ref:`Font` font, :ref:`Vector2` pos, :ref:`String` text, :ref:`HorizontalAlignment` alignment=0, :ref:`float` width=-1, :ref:`int` font_size=16, :ref:`int` max_lines=-1, :ref:`Color` modulate=Color(1, 1, 1, 1), :ref:`LineBreakFlag` brk_flags=3, :ref:`JustificationFlag` justification_flags=3, :ref:`Direction` direction=0, :ref:`Orientation` orientation=0 **)** |const| | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`draw_multiline_string_outline` **(** :ref:`Font` font, :ref:`Vector2` pos, :ref:`String` text, :ref:`HorizontalAlignment` alignment=0, :ref:`float` width=-1, :ref:`int` font_size=16, :ref:`int` max_lines=-1, :ref:`int` size=1, :ref:`Color` modulate=Color(1, 1, 1, 1), :ref:`LineBreakFlag` brk_flags=3, :ref:`JustificationFlag` justification_flags=3, :ref:`Direction` direction=0, :ref:`Orientation` orientation=0 **)** |const| | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`draw_multimesh` **(** :ref:`MultiMesh` multimesh, :ref:`Texture2D` texture **)** | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`draw_polygon` **(** :ref:`PackedVector2Array` points, :ref:`PackedColorArray` colors, :ref:`PackedVector2Array` uvs=PackedVector2Array(), :ref:`Texture2D` texture=null **)** | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`draw_polyline` **(** :ref:`PackedVector2Array` points, :ref:`Color` color, :ref:`float` width=-1.0, :ref:`bool` antialiased=false **)** | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`draw_polyline_colors` **(** :ref:`PackedVector2Array` points, :ref:`PackedColorArray` colors, :ref:`float` width=-1.0, :ref:`bool` antialiased=false **)** | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`draw_primitive` **(** :ref:`PackedVector2Array` points, :ref:`PackedColorArray` colors, :ref:`PackedVector2Array` uvs, :ref:`Texture2D` texture=null **)** | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`draw_rect` **(** :ref:`Rect2` rect, :ref:`Color` color, :ref:`bool` filled=true, :ref:`float` width=-1.0 **)** | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`draw_set_transform` **(** :ref:`Vector2` position, :ref:`float` rotation=0.0, :ref:`Vector2` scale=Vector2(1, 1) **)** | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`draw_set_transform_matrix` **(** :ref:`Transform2D` xform **)** | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`draw_string` **(** :ref:`Font` font, :ref:`Vector2` pos, :ref:`String` text, :ref:`HorizontalAlignment` alignment=0, :ref:`float` width=-1, :ref:`int` font_size=16, :ref:`Color` modulate=Color(1, 1, 1, 1), :ref:`JustificationFlag` justification_flags=3, :ref:`Direction` direction=0, :ref:`Orientation` orientation=0 **)** |const| | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`draw_string_outline` **(** :ref:`Font` font, :ref:`Vector2` pos, :ref:`String` text, :ref:`HorizontalAlignment` alignment=0, :ref:`float` width=-1, :ref:`int` font_size=16, :ref:`int` size=1, :ref:`Color` modulate=Color(1, 1, 1, 1), :ref:`JustificationFlag` justification_flags=3, :ref:`Direction` direction=0, :ref:`Orientation` orientation=0 **)** |const| | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`draw_style_box` **(** :ref:`StyleBox` style_box, :ref:`Rect2` rect **)** | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`draw_texture` **(** :ref:`Texture2D` texture, :ref:`Vector2` position, :ref:`Color` modulate=Color(1, 1, 1, 1) **)** | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`draw_texture_rect` **(** :ref:`Texture2D` texture, :ref:`Rect2` rect, :ref:`bool` tile, :ref:`Color` modulate=Color(1, 1, 1, 1), :ref:`bool` transpose=false **)** | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`draw_texture_rect_region` **(** :ref:`Texture2D` texture, :ref:`Rect2` rect, :ref:`Rect2` src_rect, :ref:`Color` modulate=Color(1, 1, 1, 1), :ref:`bool` transpose=false, :ref:`bool` clip_uv=true **)** | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`force_update_transform` **(** **)** | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`get_canvas` **(** **)** |const| | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`get_canvas_item` **(** **)** |const| | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Transform2D` | :ref:`get_canvas_transform` **(** **)** |const| | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`get_global_mouse_position` **(** **)** |const| | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Transform2D` | :ref:`get_global_transform` **(** **)** |const| | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Transform2D` | :ref:`get_global_transform_with_canvas` **(** **)** |const| | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`get_local_mouse_position` **(** **)** |const| | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Transform2D` | :ref:`get_screen_transform` **(** **)** |const| | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Transform2D` | :ref:`get_transform` **(** **)** |const| | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Rect2` | :ref:`get_viewport_rect` **(** **)** |const| | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Transform2D` | :ref:`get_viewport_transform` **(** **)** |const| | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`get_visibility_layer_bit` **(** :ref:`int` layer **)** |const| | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`World2D` | :ref:`get_world_2d` **(** **)** |const| | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`hide` **(** **)** | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_local_transform_notification_enabled` **(** **)** |const| | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_transform_notification_enabled` **(** **)** |const| | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_visible_in_tree` **(** **)** |const| | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`make_canvas_position_local` **(** :ref:`Vector2` screen_point **)** |const| | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`InputEvent` | :ref:`make_input_local` **(** :ref:`InputEvent` event **)** |const| | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`move_to_front` **(** **)** | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`queue_redraw` **(** **)** | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`set_notify_local_transform` **(** :ref:`bool` enable **)** | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`set_notify_transform` **(** :ref:`bool` enable **)** | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`set_visibility_layer_bit` **(** :ref:`int` layer, :ref:`bool` enabled **)** | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`show` **(** **)** | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_draw` **(** **)** |virtual| | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`draw_animation_slice` **(** :ref:`float` animation_length, :ref:`float` slice_begin, :ref:`float` slice_end, :ref:`float` offset=0.0 **)** | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`draw_arc` **(** :ref:`Vector2` center, :ref:`float` radius, :ref:`float` start_angle, :ref:`float` end_angle, :ref:`int` point_count, :ref:`Color` color, :ref:`float` width=-1.0, :ref:`bool` antialiased=false **)** | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`draw_char` **(** :ref:`Font` font, :ref:`Vector2` pos, :ref:`String` char, :ref:`int` font_size=16, :ref:`Color` modulate=Color(1, 1, 1, 1) **)** |const| | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`draw_char_outline` **(** :ref:`Font` font, :ref:`Vector2` pos, :ref:`String` char, :ref:`int` font_size=16, :ref:`int` size=-1, :ref:`Color` modulate=Color(1, 1, 1, 1) **)** |const| | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`draw_circle` **(** :ref:`Vector2` position, :ref:`float` radius, :ref:`Color` color **)** | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`draw_colored_polygon` **(** :ref:`PackedVector2Array` points, :ref:`Color` color, :ref:`PackedVector2Array` uvs=PackedVector2Array(), :ref:`Texture2D` texture=null **)** | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`draw_dashed_line` **(** :ref:`Vector2` from, :ref:`Vector2` to, :ref:`Color` color, :ref:`float` width=-1.0, :ref:`float` dash=2.0, :ref:`bool` aligned=true **)** | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`draw_end_animation` **(** **)** | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`draw_lcd_texture_rect_region` **(** :ref:`Texture2D` texture, :ref:`Rect2` rect, :ref:`Rect2` src_rect, :ref:`Color` modulate=Color(1, 1, 1, 1) **)** | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`draw_line` **(** :ref:`Vector2` from, :ref:`Vector2` to, :ref:`Color` color, :ref:`float` width=-1.0, :ref:`bool` antialiased=false **)** | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`draw_mesh` **(** :ref:`Mesh` mesh, :ref:`Texture2D` texture, :ref:`Transform2D` transform=Transform2D(1, 0, 0, 1, 0, 0), :ref:`Color` modulate=Color(1, 1, 1, 1) **)** | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`draw_msdf_texture_rect_region` **(** :ref:`Texture2D` texture, :ref:`Rect2` rect, :ref:`Rect2` src_rect, :ref:`Color` modulate=Color(1, 1, 1, 1), :ref:`float` outline=0.0, :ref:`float` pixel_range=4.0, :ref:`float` scale=1.0 **)** | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`draw_multiline` **(** :ref:`PackedVector2Array` points, :ref:`Color` color, :ref:`float` width=-1.0 **)** | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`draw_multiline_colors` **(** :ref:`PackedVector2Array` points, :ref:`PackedColorArray` colors, :ref:`float` width=-1.0 **)** | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`draw_multiline_string` **(** :ref:`Font` font, :ref:`Vector2` pos, :ref:`String` text, :ref:`HorizontalAlignment` alignment=0, :ref:`float` width=-1, :ref:`int` font_size=16, :ref:`int` max_lines=-1, :ref:`Color` modulate=Color(1, 1, 1, 1), |bitfield|\<:ref:`LineBreakFlag`\> brk_flags=3, |bitfield|\<:ref:`JustificationFlag`\> justification_flags=3, :ref:`Direction` direction=0, :ref:`Orientation` orientation=0 **)** |const| | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`draw_multiline_string_outline` **(** :ref:`Font` font, :ref:`Vector2` pos, :ref:`String` text, :ref:`HorizontalAlignment` alignment=0, :ref:`float` width=-1, :ref:`int` font_size=16, :ref:`int` max_lines=-1, :ref:`int` size=1, :ref:`Color` modulate=Color(1, 1, 1, 1), |bitfield|\<:ref:`LineBreakFlag`\> brk_flags=3, |bitfield|\<:ref:`JustificationFlag`\> justification_flags=3, :ref:`Direction` direction=0, :ref:`Orientation` orientation=0 **)** |const| | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`draw_multimesh` **(** :ref:`MultiMesh` multimesh, :ref:`Texture2D` texture **)** | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`draw_polygon` **(** :ref:`PackedVector2Array` points, :ref:`PackedColorArray` colors, :ref:`PackedVector2Array` uvs=PackedVector2Array(), :ref:`Texture2D` texture=null **)** | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`draw_polyline` **(** :ref:`PackedVector2Array` points, :ref:`Color` color, :ref:`float` width=-1.0, :ref:`bool` antialiased=false **)** | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`draw_polyline_colors` **(** :ref:`PackedVector2Array` points, :ref:`PackedColorArray` colors, :ref:`float` width=-1.0, :ref:`bool` antialiased=false **)** | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`draw_primitive` **(** :ref:`PackedVector2Array` points, :ref:`PackedColorArray` colors, :ref:`PackedVector2Array` uvs, :ref:`Texture2D` texture=null **)** | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`draw_rect` **(** :ref:`Rect2` rect, :ref:`Color` color, :ref:`bool` filled=true, :ref:`float` width=-1.0 **)** | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`draw_set_transform` **(** :ref:`Vector2` position, :ref:`float` rotation=0.0, :ref:`Vector2` scale=Vector2(1, 1) **)** | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`draw_set_transform_matrix` **(** :ref:`Transform2D` xform **)** | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`draw_string` **(** :ref:`Font` font, :ref:`Vector2` pos, :ref:`String` text, :ref:`HorizontalAlignment` alignment=0, :ref:`float` width=-1, :ref:`int` font_size=16, :ref:`Color` modulate=Color(1, 1, 1, 1), |bitfield|\<:ref:`JustificationFlag`\> justification_flags=3, :ref:`Direction` direction=0, :ref:`Orientation` orientation=0 **)** |const| | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`draw_string_outline` **(** :ref:`Font` font, :ref:`Vector2` pos, :ref:`String` text, :ref:`HorizontalAlignment` alignment=0, :ref:`float` width=-1, :ref:`int` font_size=16, :ref:`int` size=1, :ref:`Color` modulate=Color(1, 1, 1, 1), |bitfield|\<:ref:`JustificationFlag`\> justification_flags=3, :ref:`Direction` direction=0, :ref:`Orientation` orientation=0 **)** |const| | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`draw_style_box` **(** :ref:`StyleBox` style_box, :ref:`Rect2` rect **)** | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`draw_texture` **(** :ref:`Texture2D` texture, :ref:`Vector2` position, :ref:`Color` modulate=Color(1, 1, 1, 1) **)** | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`draw_texture_rect` **(** :ref:`Texture2D` texture, :ref:`Rect2` rect, :ref:`bool` tile, :ref:`Color` modulate=Color(1, 1, 1, 1), :ref:`bool` transpose=false **)** | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`draw_texture_rect_region` **(** :ref:`Texture2D` texture, :ref:`Rect2` rect, :ref:`Rect2` src_rect, :ref:`Color` modulate=Color(1, 1, 1, 1), :ref:`bool` transpose=false, :ref:`bool` clip_uv=true **)** | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`force_update_transform` **(** **)** | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`get_canvas` **(** **)** |const| | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`get_canvas_item` **(** **)** |const| | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Transform2D` | :ref:`get_canvas_transform` **(** **)** |const| | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`get_global_mouse_position` **(** **)** |const| | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Transform2D` | :ref:`get_global_transform` **(** **)** |const| | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Transform2D` | :ref:`get_global_transform_with_canvas` **(** **)** |const| | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`get_local_mouse_position` **(** **)** |const| | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Transform2D` | :ref:`get_screen_transform` **(** **)** |const| | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Transform2D` | :ref:`get_transform` **(** **)** |const| | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Rect2` | :ref:`get_viewport_rect` **(** **)** |const| | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Transform2D` | :ref:`get_viewport_transform` **(** **)** |const| | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`get_visibility_layer_bit` **(** :ref:`int` layer **)** |const| | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`World2D` | :ref:`get_world_2d` **(** **)** |const| | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`hide` **(** **)** | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_local_transform_notification_enabled` **(** **)** |const| | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_transform_notification_enabled` **(** **)** |const| | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_visible_in_tree` **(** **)** |const| | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`make_canvas_position_local` **(** :ref:`Vector2` screen_point **)** |const| | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`InputEvent` | :ref:`make_input_local` **(** :ref:`InputEvent` event **)** |const| | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`move_to_front` **(** **)** | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`queue_redraw` **(** **)** | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`set_notify_local_transform` **(** :ref:`bool` enable **)** | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`set_notify_transform` **(** :ref:`bool` enable **)** | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`set_visibility_layer_bit` **(** :ref:`int` layer, :ref:`bool` enabled **)** | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`show` **(** **)** | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator @@ -987,7 +987,7 @@ If ``width`` is negative, then two-point primitives will be drawn instead of a f .. rst-class:: classref-method -void **draw_multiline_string** **(** :ref:`Font` font, :ref:`Vector2` pos, :ref:`String` text, :ref:`HorizontalAlignment` alignment=0, :ref:`float` width=-1, :ref:`int` font_size=16, :ref:`int` max_lines=-1, :ref:`Color` modulate=Color(1, 1, 1, 1), :ref:`LineBreakFlag` brk_flags=3, :ref:`JustificationFlag` justification_flags=3, :ref:`Direction` direction=0, :ref:`Orientation` orientation=0 **)** |const| +void **draw_multiline_string** **(** :ref:`Font` font, :ref:`Vector2` pos, :ref:`String` text, :ref:`HorizontalAlignment` alignment=0, :ref:`float` width=-1, :ref:`int` font_size=16, :ref:`int` max_lines=-1, :ref:`Color` modulate=Color(1, 1, 1, 1), |bitfield|\<:ref:`LineBreakFlag`\> brk_flags=3, |bitfield|\<:ref:`JustificationFlag`\> justification_flags=3, :ref:`Direction` direction=0, :ref:`Orientation` orientation=0 **)** |const| Breaks ``text`` into lines and draws it using the specified ``font`` at the ``pos`` (top-left corner). The text will have its color multiplied by ``modulate``. If ``width`` is greater than or equal to 0, the text will be clipped if it exceeds the specified width. @@ -999,7 +999,7 @@ Breaks ``text`` into lines and draws it using the specified ``font`` at the ``po .. rst-class:: classref-method -void **draw_multiline_string_outline** **(** :ref:`Font` font, :ref:`Vector2` pos, :ref:`String` text, :ref:`HorizontalAlignment` alignment=0, :ref:`float` width=-1, :ref:`int` font_size=16, :ref:`int` max_lines=-1, :ref:`int` size=1, :ref:`Color` modulate=Color(1, 1, 1, 1), :ref:`LineBreakFlag` brk_flags=3, :ref:`JustificationFlag` justification_flags=3, :ref:`Direction` direction=0, :ref:`Orientation` orientation=0 **)** |const| +void **draw_multiline_string_outline** **(** :ref:`Font` font, :ref:`Vector2` pos, :ref:`String` text, :ref:`HorizontalAlignment` alignment=0, :ref:`float` width=-1, :ref:`int` font_size=16, :ref:`int` max_lines=-1, :ref:`int` size=1, :ref:`Color` modulate=Color(1, 1, 1, 1), |bitfield|\<:ref:`LineBreakFlag`\> brk_flags=3, |bitfield|\<:ref:`JustificationFlag`\> justification_flags=3, :ref:`Direction` direction=0, :ref:`Orientation` orientation=0 **)** |const| Breaks ``text`` to the lines and draws text outline using the specified ``font`` at the ``pos`` (top-left corner). The text will have its color multiplied by ``modulate``. If ``width`` is greater than or equal to 0, the text will be clipped if it exceeds the specified width. @@ -1119,7 +1119,7 @@ Sets a custom transform for drawing via matrix. Anything drawn afterwards will b .. rst-class:: classref-method -void **draw_string** **(** :ref:`Font` font, :ref:`Vector2` pos, :ref:`String` text, :ref:`HorizontalAlignment` alignment=0, :ref:`float` width=-1, :ref:`int` font_size=16, :ref:`Color` modulate=Color(1, 1, 1, 1), :ref:`JustificationFlag` justification_flags=3, :ref:`Direction` direction=0, :ref:`Orientation` orientation=0 **)** |const| +void **draw_string** **(** :ref:`Font` font, :ref:`Vector2` pos, :ref:`String` text, :ref:`HorizontalAlignment` alignment=0, :ref:`float` width=-1, :ref:`int` font_size=16, :ref:`Color` modulate=Color(1, 1, 1, 1), |bitfield|\<:ref:`JustificationFlag`\> justification_flags=3, :ref:`Direction` direction=0, :ref:`Orientation` orientation=0 **)** |const| Draws ``text`` using the specified ``font`` at the ``pos`` (bottom-left corner using the baseline of the font). The text will have its color multiplied by ``modulate``. If ``width`` is greater than or equal to 0, the text will be clipped if it exceeds the specified width. @@ -1158,7 +1158,7 @@ See also :ref:`Font.draw_string`. .. rst-class:: classref-method -void **draw_string_outline** **(** :ref:`Font` font, :ref:`Vector2` pos, :ref:`String` text, :ref:`HorizontalAlignment` alignment=0, :ref:`float` width=-1, :ref:`int` font_size=16, :ref:`int` size=1, :ref:`Color` modulate=Color(1, 1, 1, 1), :ref:`JustificationFlag` justification_flags=3, :ref:`Direction` direction=0, :ref:`Orientation` orientation=0 **)** |const| +void **draw_string_outline** **(** :ref:`Font` font, :ref:`Vector2` pos, :ref:`String` text, :ref:`HorizontalAlignment` alignment=0, :ref:`float` width=-1, :ref:`int` font_size=16, :ref:`int` size=1, :ref:`Color` modulate=Color(1, 1, 1, 1), |bitfield|\<:ref:`JustificationFlag`\> justification_flags=3, :ref:`Direction` direction=0, :ref:`Orientation` orientation=0 **)** |const| Draws ``text`` outline using the specified ``font`` at the ``pos`` (bottom-left corner using the baseline of the font). The text will have its color multiplied by ``modulate``. If ``width`` is greater than or equal to 0, the text will be clipped if it exceeds the specified width. @@ -1534,3 +1534,4 @@ Show the **CanvasItem** if it's currently hidden. This is equivalent to setting .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_canvasitemmaterial.rst b/classes/class_canvasitemmaterial.rst index 99e2bf38e5b9..9a244683fc2a 100644 --- a/classes/class_canvasitemmaterial.rst +++ b/classes/class_canvasitemmaterial.rst @@ -253,3 +253,4 @@ This property (and other ``particles_anim_*`` properties that depend on it) has .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_canvaslayer.rst b/classes/class_canvaslayer.rst index 3c7262ce264f..da81db3f059c 100644 --- a/classes/class_canvaslayer.rst +++ b/classes/class_canvaslayer.rst @@ -324,3 +324,4 @@ Shows any :ref:`CanvasItem` under this **CanvasLayer**. This i .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_canvasmodulate.rst b/classes/class_canvasmodulate.rst index dc8deec85f8e..0c8e1787f487 100644 --- a/classes/class_canvasmodulate.rst +++ b/classes/class_canvasmodulate.rst @@ -61,3 +61,4 @@ The tint color to apply. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_canvastexture.rst b/classes/class_canvastexture.rst index 6e1ddc593568..bbe7817f4fa0 100644 --- a/classes/class_canvastexture.rst +++ b/classes/class_canvastexture.rst @@ -181,3 +181,4 @@ The texture repeat mode to use when drawing this **CanvasTexture**. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_capsulemesh.rst b/classes/class_capsulemesh.rst index 97262f7a0184..9a6686e0c501 100644 --- a/classes/class_capsulemesh.rst +++ b/classes/class_capsulemesh.rst @@ -118,3 +118,4 @@ Number of rings along the height of the capsule. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_capsuleshape2d.rst b/classes/class_capsuleshape2d.rst index 50eecef30c14..f845eb041228 100644 --- a/classes/class_capsuleshape2d.rst +++ b/classes/class_capsuleshape2d.rst @@ -82,3 +82,4 @@ The capsule's radius. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_capsuleshape3d.rst b/classes/class_capsuleshape3d.rst index e0827225ccf1..4406449bdbe7 100644 --- a/classes/class_capsuleshape3d.rst +++ b/classes/class_capsuleshape3d.rst @@ -89,3 +89,4 @@ The capsule's radius. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_centercontainer.rst b/classes/class_centercontainer.rst index 667f8c4fdc9c..a5063b808cb1 100644 --- a/classes/class_centercontainer.rst +++ b/classes/class_centercontainer.rst @@ -68,3 +68,4 @@ If ``true``, centers children relative to the **CenterContainer**'s top left cor .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_characterbody2d.rst b/classes/class_characterbody2d.rst index 11635f1e1a1a..b8b7f94edab4 100644 --- a/classes/class_characterbody2d.rst +++ b/classes/class_characterbody2d.rst @@ -715,3 +715,4 @@ Returns ``true`` if the body collided, otherwise, returns ``false``. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_characterbody3d.rst b/classes/class_characterbody3d.rst index 2ca2a5b6ac01..fc59e387dfb1 100644 --- a/classes/class_characterbody3d.rst +++ b/classes/class_characterbody3d.rst @@ -708,3 +708,4 @@ Returns ``true`` if the body collided, otherwise, returns ``false``. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_charfxtransform.rst b/classes/class_charfxtransform.rst index efd83afb1497..c13d789d91a7 100644 --- a/classes/class_charfxtransform.rst +++ b/classes/class_charfxtransform.rst @@ -45,7 +45,7 @@ Properties +-------------------------------------+----------------------------------------------------------------------+-----------------------+ | :ref:`Dictionary` | :ref:`env` | ``{}`` | +-------------------------------------+----------------------------------------------------------------------+-----------------------+ - | :ref:`RID` | :ref:`font` | | + | :ref:`RID` | :ref:`font` | ``RID()`` | +-------------------------------------+----------------------------------------------------------------------+-----------------------+ | :ref:`int` | :ref:`glyph_count` | ``0`` | +-------------------------------------+----------------------------------------------------------------------+-----------------------+ @@ -136,7 +136,7 @@ For example, the opening BBCode tag ``[example foo=hello bar=true baz=42 color=# .. rst-class:: classref-property -:ref:`RID` **font** +:ref:`RID` **font** = ``RID()`` .. rst-class:: classref-property-setget @@ -287,3 +287,4 @@ If ``true``, the character will be drawn. If ``false``, the character will be hi .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_checkbox.rst b/classes/class_checkbox.rst index d6c64713d1b0..fe21e8a17bd3 100644 --- a/classes/class_checkbox.rst +++ b/classes/class_checkbox.rst @@ -426,3 +426,4 @@ The :ref:`StyleBox` to display as a background when the **CheckB .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_checkbutton.rst b/classes/class_checkbutton.rst index 9feeee9442a7..ff938ed61b9e 100644 --- a/classes/class_checkbutton.rst +++ b/classes/class_checkbutton.rst @@ -424,3 +424,4 @@ The :ref:`StyleBox` to display as a background when the **CheckB .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_circleshape2d.rst b/classes/class_circleshape2d.rst index a6e43ce21d3b..7fb99a52b11e 100644 --- a/classes/class_circleshape2d.rst +++ b/classes/class_circleshape2d.rst @@ -63,3 +63,4 @@ The circle's radius. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_classdb.rst b/classes/class_classdb.rst index 8483398b7c26..cad693197769 100644 --- a/classes/class_classdb.rst +++ b/classes/class_classdb.rst @@ -366,3 +366,4 @@ Returns whether ``inherits`` is an ancestor of ``class`` or not. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_codeedit.rst b/classes/class_codeedit.rst index 6fcc1cdcd9bc..6a4c1502aff4 100644 --- a/classes/class_codeedit.rst +++ b/classes/class_codeedit.rst @@ -2138,3 +2138,4 @@ Sets the :ref:`StyleBox` when :ref:`TextEdit.editable` of the given shape owner. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_collisionobject3d.rst b/classes/class_collisionobject3d.rst index b31de7da96bd..6769bba2ea58 100644 --- a/classes/class_collisionobject3d.rst +++ b/classes/class_collisionobject3d.rst @@ -591,3 +591,4 @@ Sets the :ref:`Transform3D` of the given shape owner. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_collisionpolygon2d.rst b/classes/class_collisionpolygon2d.rst index 059269aa9a58..0395735b1d1e 100644 --- a/classes/class_collisionpolygon2d.rst +++ b/classes/class_collisionpolygon2d.rst @@ -174,3 +174,4 @@ The polygon's list of vertices. Each point will be connected to the next, and th .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_collisionpolygon3d.rst b/classes/class_collisionpolygon3d.rst index 79dcc77bfb09..20af62160827 100644 --- a/classes/class_collisionpolygon3d.rst +++ b/classes/class_collisionpolygon3d.rst @@ -122,3 +122,4 @@ Array of vertices which define the 2D polygon in the local XY plane. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_collisionshape2d.rst b/classes/class_collisionshape2d.rst index a4f216f3e49d..8f23ab24682b 100644 --- a/classes/class_collisionshape2d.rst +++ b/classes/class_collisionshape2d.rst @@ -154,3 +154,4 @@ The actual shape owned by this collision shape. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_collisionshape3d.rst b/classes/class_collisionshape3d.rst index 2ecafb7a1f9a..79f376cc73c4 100644 --- a/classes/class_collisionshape3d.rst +++ b/classes/class_collisionshape3d.rst @@ -138,3 +138,4 @@ If this method exists within a script it will be called whenever the shape resou .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_color.rst b/classes/class_color.rst index b9264ceb3e78..d65b4bc3921b 100644 --- a/classes/class_color.rst +++ b/classes/class_color.rst @@ -2385,3 +2385,4 @@ Inverts the given color. This is equivalent to ``Color.WHITE - c`` or ``Color(1 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_colorpicker.rst b/classes/class_colorpicker.rst index 9fccb00575bb..7bf1435921c7 100644 --- a/classes/class_colorpicker.rst +++ b/classes/class_colorpicker.rst @@ -786,3 +786,4 @@ The icon for rectangular wheel picker shapes. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_colorpickerbutton.rst b/classes/class_colorpickerbutton.rst index 86186be2b164..c2ef4f8a1a44 100644 --- a/classes/class_colorpickerbutton.rst +++ b/classes/class_colorpickerbutton.rst @@ -424,3 +424,4 @@ Default :ref:`StyleBox` for the **ColorPickerButton**. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_colorrect.rst b/classes/class_colorrect.rst index 8453cf5e70ba..6a29a32142d3 100644 --- a/classes/class_colorrect.rst +++ b/classes/class_colorrect.rst @@ -68,3 +68,4 @@ The fill color of the rectangle. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_compressedcubemap.rst b/classes/class_compressedcubemap.rst index a213b43b73ad..601cb66e8fca 100644 --- a/classes/class_compressedcubemap.rst +++ b/classes/class_compressedcubemap.rst @@ -43,3 +43,4 @@ See :ref:`Cubemap` for a general description of cubemaps. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_compressedcubemaparray.rst b/classes/class_compressedcubemaparray.rst index 80a1c51ca7b3..bcc46bb9ed82 100644 --- a/classes/class_compressedcubemaparray.rst +++ b/classes/class_compressedcubemaparray.rst @@ -43,3 +43,4 @@ See :ref:`CubemapArray` for a general description of cubemap .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_compressedtexture2d.rst b/classes/class_compressedtexture2d.rst index 9ef346709e14..313b2f53edf0 100644 --- a/classes/class_compressedtexture2d.rst +++ b/classes/class_compressedtexture2d.rst @@ -106,3 +106,4 @@ Loads the texture from the specified ``path``. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_compressedtexture2darray.rst b/classes/class_compressedtexture2darray.rst index e4c372a37793..a2d0381d2e22 100644 --- a/classes/class_compressedtexture2darray.rst +++ b/classes/class_compressedtexture2darray.rst @@ -43,3 +43,4 @@ See :ref:`Texture2DArray` for a general description of tex .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_compressedtexture3d.rst b/classes/class_compressedtexture3d.rst index 936ba7a99906..4a24f97fc97f 100644 --- a/classes/class_compressedtexture3d.rst +++ b/classes/class_compressedtexture3d.rst @@ -94,3 +94,4 @@ Loads the texture from the specified ``path``. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_compressedtexturelayered.rst b/classes/class_compressedtexturelayered.rst index 8e4f42445832..df1355183977 100644 --- a/classes/class_compressedtexturelayered.rst +++ b/classes/class_compressedtexturelayered.rst @@ -92,3 +92,4 @@ Loads the texture at ``path``. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_concavepolygonshape2d.rst b/classes/class_concavepolygonshape2d.rst index 43efacf3bcee..cde57c64f9d9 100644 --- a/classes/class_concavepolygonshape2d.rst +++ b/classes/class_concavepolygonshape2d.rst @@ -69,3 +69,4 @@ The array of points that make up the **ConcavePolygonShape2D**'s line segments. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_concavepolygonshape3d.rst b/classes/class_concavepolygonshape3d.rst index c2bcb29b1114..042970feefba 100644 --- a/classes/class_concavepolygonshape3d.rst +++ b/classes/class_concavepolygonshape3d.rst @@ -119,3 +119,4 @@ Sets the faces of the trimesh shape from an array of vertices. The ``faces`` arr .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_conetwistjoint3d.rst b/classes/class_conetwistjoint3d.rst index a59a8105781e..11c9de63300b 100644 --- a/classes/class_conetwistjoint3d.rst +++ b/classes/class_conetwistjoint3d.rst @@ -263,3 +263,4 @@ Sets the value of the specified parameter. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_configfile.rst b/classes/class_configfile.rst index 18b6d7ab26a2..9b589dc5cc5e 100644 --- a/classes/class_configfile.rst +++ b/classes/class_configfile.rst @@ -395,3 +395,4 @@ Assigns a value to the specified key of the specified section. If either the sec .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_confirmationdialog.rst b/classes/class_confirmationdialog.rst index d1c61ba2fc0e..bf95b48927e5 100644 --- a/classes/class_confirmationdialog.rst +++ b/classes/class_confirmationdialog.rst @@ -115,3 +115,4 @@ Returns the cancel button. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_container.rst b/classes/class_container.rst index cdf194f51665..7ea0dadb7944 100644 --- a/classes/class_container.rst +++ b/classes/class_container.rst @@ -177,3 +177,4 @@ Queue resort of the contained children. This is called automatically anyway, but .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_control.rst b/classes/class_control.rst index 88d4ded3a898..f41e8dcd0c9c 100644 --- a/classes/class_control.rst +++ b/classes/class_control.rst @@ -62,85 +62,85 @@ Properties .. table:: :widths: auto - +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ - | :ref:`float` | :ref:`anchor_bottom` | ``0.0`` | - +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ - | :ref:`float` | :ref:`anchor_left` | ``0.0`` | - +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ - | :ref:`float` | :ref:`anchor_right` | ``0.0`` | - +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ - | :ref:`float` | :ref:`anchor_top` | ``0.0`` | - +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ - | :ref:`bool` | :ref:`auto_translate` | ``true`` | - +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ - | :ref:`bool` | :ref:`clip_contents` | ``false`` | - +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ - | :ref:`Vector2` | :ref:`custom_minimum_size` | ``Vector2(0, 0)`` | - +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ - | :ref:`FocusMode` | :ref:`focus_mode` | ``0`` | - +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ - | :ref:`NodePath` | :ref:`focus_neighbor_bottom` | ``NodePath("")`` | - +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ - | :ref:`NodePath` | :ref:`focus_neighbor_left` | ``NodePath("")`` | - +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ - | :ref:`NodePath` | :ref:`focus_neighbor_right` | ``NodePath("")`` | - +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ - | :ref:`NodePath` | :ref:`focus_neighbor_top` | ``NodePath("")`` | - +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ - | :ref:`NodePath` | :ref:`focus_next` | ``NodePath("")`` | - +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ - | :ref:`NodePath` | :ref:`focus_previous` | ``NodePath("")`` | - +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ - | :ref:`Vector2` | :ref:`global_position` | | - +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ - | :ref:`GrowDirection` | :ref:`grow_horizontal` | ``1`` | - +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ - | :ref:`GrowDirection` | :ref:`grow_vertical` | ``1`` | - +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ - | :ref:`LayoutDirection` | :ref:`layout_direction` | ``0`` | - +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ - | :ref:`bool` | :ref:`localize_numeral_system` | ``true`` | - +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ - | :ref:`CursorShape` | :ref:`mouse_default_cursor_shape` | ``0`` | - +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ - | :ref:`MouseFilter` | :ref:`mouse_filter` | ``0`` | - +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ - | :ref:`bool` | :ref:`mouse_force_pass_scroll_events` | ``true`` | - +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ - | :ref:`float` | :ref:`offset_bottom` | ``0.0`` | - +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ - | :ref:`float` | :ref:`offset_left` | ``0.0`` | - +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ - | :ref:`float` | :ref:`offset_right` | ``0.0`` | - +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ - | :ref:`float` | :ref:`offset_top` | ``0.0`` | - +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ - | :ref:`Vector2` | :ref:`pivot_offset` | ``Vector2(0, 0)`` | - +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ - | :ref:`Vector2` | :ref:`position` | ``Vector2(0, 0)`` | - +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ - | :ref:`float` | :ref:`rotation` | ``0.0`` | - +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ - | :ref:`float` | :ref:`rotation_degrees` | | - +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ - | :ref:`Vector2` | :ref:`scale` | ``Vector2(1, 1)`` | - +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ - | :ref:`Node` | :ref:`shortcut_context` | | - +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ - | :ref:`Vector2` | :ref:`size` | ``Vector2(0, 0)`` | - +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ - | :ref:`SizeFlags` | :ref:`size_flags_horizontal` | ``1`` | - +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ - | :ref:`float` | :ref:`size_flags_stretch_ratio` | ``1.0`` | - +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ - | :ref:`SizeFlags` | :ref:`size_flags_vertical` | ``1`` | - +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ - | :ref:`Theme` | :ref:`theme` | | - +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ - | :ref:`StringName` | :ref:`theme_type_variation` | ``&""`` | - +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ - | :ref:`String` | :ref:`tooltip_text` | ``""`` | - +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ + +--------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ + | :ref:`float` | :ref:`anchor_bottom` | ``0.0`` | + +--------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ + | :ref:`float` | :ref:`anchor_left` | ``0.0`` | + +--------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ + | :ref:`float` | :ref:`anchor_right` | ``0.0`` | + +--------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ + | :ref:`float` | :ref:`anchor_top` | ``0.0`` | + +--------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ + | :ref:`bool` | :ref:`auto_translate` | ``true`` | + +--------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ + | :ref:`bool` | :ref:`clip_contents` | ``false`` | + +--------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ + | :ref:`Vector2` | :ref:`custom_minimum_size` | ``Vector2(0, 0)`` | + +--------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ + | :ref:`FocusMode` | :ref:`focus_mode` | ``0`` | + +--------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ + | :ref:`NodePath` | :ref:`focus_neighbor_bottom` | ``NodePath("")`` | + +--------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ + | :ref:`NodePath` | :ref:`focus_neighbor_left` | ``NodePath("")`` | + +--------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ + | :ref:`NodePath` | :ref:`focus_neighbor_right` | ``NodePath("")`` | + +--------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ + | :ref:`NodePath` | :ref:`focus_neighbor_top` | ``NodePath("")`` | + +--------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ + | :ref:`NodePath` | :ref:`focus_next` | ``NodePath("")`` | + +--------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ + | :ref:`NodePath` | :ref:`focus_previous` | ``NodePath("")`` | + +--------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ + | :ref:`Vector2` | :ref:`global_position` | | + +--------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ + | :ref:`GrowDirection` | :ref:`grow_horizontal` | ``1`` | + +--------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ + | :ref:`GrowDirection` | :ref:`grow_vertical` | ``1`` | + +--------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ + | :ref:`LayoutDirection` | :ref:`layout_direction` | ``0`` | + +--------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ + | :ref:`bool` | :ref:`localize_numeral_system` | ``true`` | + +--------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ + | :ref:`CursorShape` | :ref:`mouse_default_cursor_shape` | ``0`` | + +--------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ + | :ref:`MouseFilter` | :ref:`mouse_filter` | ``0`` | + +--------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ + | :ref:`bool` | :ref:`mouse_force_pass_scroll_events` | ``true`` | + +--------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ + | :ref:`float` | :ref:`offset_bottom` | ``0.0`` | + +--------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ + | :ref:`float` | :ref:`offset_left` | ``0.0`` | + +--------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ + | :ref:`float` | :ref:`offset_right` | ``0.0`` | + +--------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ + | :ref:`float` | :ref:`offset_top` | ``0.0`` | + +--------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ + | :ref:`Vector2` | :ref:`pivot_offset` | ``Vector2(0, 0)`` | + +--------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ + | :ref:`Vector2` | :ref:`position` | ``Vector2(0, 0)`` | + +--------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ + | :ref:`float` | :ref:`rotation` | ``0.0`` | + +--------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ + | :ref:`float` | :ref:`rotation_degrees` | | + +--------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ + | :ref:`Vector2` | :ref:`scale` | ``Vector2(1, 1)`` | + +--------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ + | :ref:`Node` | :ref:`shortcut_context` | | + +--------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ + | :ref:`Vector2` | :ref:`size` | ``Vector2(0, 0)`` | + +--------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ + | |bitfield|\<:ref:`SizeFlags`\> | :ref:`size_flags_horizontal` | ``1`` | + +--------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ + | :ref:`float` | :ref:`size_flags_stretch_ratio` | ``1.0`` | + +--------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ + | |bitfield|\<:ref:`SizeFlags`\> | :ref:`size_flags_vertical` | ``1`` | + +--------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ + | :ref:`Theme` | :ref:`theme` | | + +--------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ + | :ref:`StringName` | :ref:`theme_type_variation` | ``&""`` | + +--------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ + | :ref:`String` | :ref:`tooltip_text` | ``""`` | + +--------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+ .. rst-class:: classref-reftable-group @@ -1736,12 +1736,12 @@ The size of the node's bounding rectangle, in the node's coordinate system. :ref .. rst-class:: classref-property -:ref:`SizeFlags` **size_flags_horizontal** = ``1`` +|bitfield|\<:ref:`SizeFlags`\> **size_flags_horizontal** = ``1`` .. rst-class:: classref-property-setget -- void **set_h_size_flags** **(** :ref:`SizeFlags` value **)** -- :ref:`SizeFlags` **get_h_size_flags** **(** **)** +- void **set_h_size_flags** **(** |bitfield|\<:ref:`SizeFlags`\> value **)** +- |bitfield|\<:ref:`SizeFlags`\> **get_h_size_flags** **(** **)** Tells the parent :ref:`Container` nodes how they should resize and place the node on the X axis. Use a combination of the :ref:`SizeFlags` constants to change the flags. See the constants to learn what each does. @@ -1770,12 +1770,12 @@ If the node and at least one of its neighbors uses the :ref:`SIZE_EXPAND` **size_flags_vertical** = ``1`` +|bitfield|\<:ref:`SizeFlags`\> **size_flags_vertical** = ``1`` .. rst-class:: classref-property-setget -- void **set_v_size_flags** **(** :ref:`SizeFlags` value **)** -- :ref:`SizeFlags` **get_v_size_flags** **(** **)** +- void **set_v_size_flags** **(** |bitfield|\<:ref:`SizeFlags`\> value **)** +- |bitfield|\<:ref:`SizeFlags`\> **get_v_size_flags** **(** **)** Tells the parent :ref:`Container` nodes how they should resize and place the node on the Y axis. Use a combination of the :ref:`SizeFlags` constants to change the flags. See the constants to learn what each does. @@ -3306,3 +3306,4 @@ Moves the mouse cursor to ``position``, relative to :ref:`position` resource to use as a CSG shape. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_csgpolygon3d.rst b/classes/class_csgpolygon3d.rst index 7b382121cef0..37a2c9c44aec 100644 --- a/classes/class_csgpolygon3d.rst +++ b/classes/class_csgpolygon3d.rst @@ -460,3 +460,4 @@ When :ref:`mode` is :ref:`MODE_SPIN` **<** :ref:`Resource` **<** :ref:`RefCounted` **<** :ref:`Object` -A script implemented in the C# programming language (Mono-enabled builds only). +A script implemented in the C# programming language, saved with the ``.cs`` extension (Mono-enabled builds only). .. rst-class:: classref-introduction-group @@ -65,3 +65,4 @@ Returns a new instance of the script. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_cubemap.rst b/classes/class_cubemap.rst index 09618ce54b02..bd2d494bff66 100644 --- a/classes/class_cubemap.rst +++ b/classes/class_cubemap.rst @@ -62,3 +62,4 @@ Creates a placeholder version of this resource (:ref:`PlaceholderCubemap` **sample_baked_with_rotation** **(** :ref:`float` offset=0.0, :ref:`bool` cubic=false **)** |const| -Similar to :ref:`sample_baked`, but returns :ref:`Transform2D` that includes a rotation along the curve. Returns empty transform if length of the curve is ``0``. +Similar to :ref:`sample_baked`, but returns :ref:`Transform2D` that includes a rotation along the curve, with :ref:`Transform2D.origin` as the point position, :ref:`Transform2D.x` as the sideways vector, and :ref:`Transform2D.y` as the forward vector. Returns an empty transform if the length of the curve is ``0``. :: - var transform = curve.sample_baked_with_rotation(offset) - position = transform.get_origin() - rotation = transform.get_rotation() + var baked = curve.sample_baked_with_rotation(offset) + # This will rotate and position the node with the up direction pointing along the curve. + position = baked.get_origin() + rotation = baked.get_rotation() + # Alternatively, not preserving scale. + transform = baked * Transform2D.FLIP_Y + # To match the rotation of PathFollow2D, not preserving scale. + transform = Transform2D(baked.y, baked.x, baked.origin) .. rst-class:: classref-item-separator @@ -389,3 +394,4 @@ Returns a list of points along the curve, with almost uniform density. ``max_sta .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_curve3d.rst b/classes/class_curve3d.rst index 389d7d33dfd8..0178ad0d67eb 100644 --- a/classes/class_curve3d.rst +++ b/classes/class_curve3d.rst @@ -480,3 +480,4 @@ Returns a list of points along the curve, with almost uniform density. ``max_sta .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_curvetexture.rst b/classes/class_curvetexture.rst index 586a8cc8199b..860c3beddd96 100644 --- a/classes/class_curvetexture.rst +++ b/classes/class_curvetexture.rst @@ -134,3 +134,4 @@ The width of the texture (in pixels). Higher values make it possible to represen .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_curvexyztexture.rst b/classes/class_curvexyztexture.rst index 5f4c60b1be2b..87dd72520099 100644 --- a/classes/class_curvexyztexture.rst +++ b/classes/class_curvexyztexture.rst @@ -122,3 +122,4 @@ The width of the texture (in pixels). Higher values make it possible to represen .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_cylindermesh.rst b/classes/class_cylindermesh.rst index 3eb70ce417ae..3ee943ee87d1 100644 --- a/classes/class_cylindermesh.rst +++ b/classes/class_cylindermesh.rst @@ -179,3 +179,4 @@ Top radius of the cylinder. If set to ``0.0``, the top faces will not be generat .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_cylindershape3d.rst b/classes/class_cylindershape3d.rst index 45a6a9fded01..58b07d7cc9b1 100644 --- a/classes/class_cylindershape3d.rst +++ b/classes/class_cylindershape3d.rst @@ -95,3 +95,4 @@ The cylinder's radius. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_dampedspringjoint2d.rst b/classes/class_dampedspringjoint2d.rst index 86d9137161ac..0069a782a707 100644 --- a/classes/class_dampedspringjoint2d.rst +++ b/classes/class_dampedspringjoint2d.rst @@ -118,3 +118,4 @@ The higher the value, the less the bodies attached to the joint will deform it. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_decal.rst b/classes/class_decal.rst index 07a97e8aaad9..7076acf53b69 100644 --- a/classes/class_decal.rst +++ b/classes/class_decal.rst @@ -493,3 +493,4 @@ One case where this is better than accessing the texture directly is when you wa .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_dictionary.rst b/classes/class_dictionary.rst index fe6c63adf5f0..4dcdf6ea3c66 100644 --- a/classes/class_dictionary.rst +++ b/classes/class_dictionary.rst @@ -601,3 +601,4 @@ Returns the corresponding value for the given ``key`` in the dictionary. If the .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_diraccess.rst b/classes/class_diraccess.rst index a42aabc01588..5fff951cf2e6 100644 --- a/classes/class_diraccess.rst +++ b/classes/class_diraccess.rst @@ -625,3 +625,4 @@ Static version of :ref:`rename`. Supports only ab .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_directionallight2d.rst b/classes/class_directionallight2d.rst index 44ac100521aa..5d99424c3116 100644 --- a/classes/class_directionallight2d.rst +++ b/classes/class_directionallight2d.rst @@ -89,3 +89,4 @@ The maximum distance from the camera center objects can be before their shadows .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_directionallight3d.rst b/classes/class_directionallight3d.rst index fca64ccadd5b..016497c44304 100644 --- a/classes/class_directionallight3d.rst +++ b/classes/class_directionallight3d.rst @@ -293,3 +293,4 @@ Set whether this **DirectionalLight3D** is visible in the sky, in the scene, or .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_displayserver.rst b/classes/class_displayserver.rst index 4551dcff910a..67f838da5b0e 100644 --- a/classes/class_displayserver.rst +++ b/classes/class_displayserver.rst @@ -31,323 +31,325 @@ Methods .. table:: :widths: auto - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`clipboard_get` **(** **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`clipboard_get_primary` **(** **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`clipboard_has` **(** **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`clipboard_set` **(** :ref:`String` clipboard **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`clipboard_set_primary` **(** :ref:`String` clipboard_primary **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`CursorShape` | :ref:`cursor_get_shape` **(** **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`cursor_set_custom_image` **(** :ref:`Resource` cursor, :ref:`CursorShape` shape=0, :ref:`Vector2` hotspot=Vector2(0, 0) **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`cursor_set_shape` **(** :ref:`CursorShape` shape **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Error` | :ref:`dialog_input_text` **(** :ref:`String` title, :ref:`String` description, :ref:`String` existing_text, :ref:`Callable` callback **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Error` | :ref:`dialog_show` **(** :ref:`String` title, :ref:`String` description, :ref:`PackedStringArray` buttons, :ref:`Callable` callback **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`enable_for_stealing_focus` **(** :ref:`int` process_id **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`force_process_and_drop_events` **(** **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`get_accent_color` **(** **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Rect2[]` | :ref:`get_display_cutouts` **(** **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Rect2i` | :ref:`get_display_safe_area` **(** **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_keyboard_focus_screen` **(** **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`get_name` **(** **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_primary_screen` **(** **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_screen_count` **(** **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_screen_from_rect` **(** :ref:`Rect2` rect **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`get_swap_cancel_ok` **(** **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_window_at_screen_position` **(** :ref:`Vector2i` position **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedInt32Array` | :ref:`get_window_list` **(** **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`global_menu_add_check_item` **(** :ref:`String` menu_root, :ref:`String` label, :ref:`Callable` callback, :ref:`Callable` key_callback, :ref:`Variant` tag=null, :ref:`Key` accelerator=0, :ref:`int` index=-1 **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`global_menu_add_icon_check_item` **(** :ref:`String` menu_root, :ref:`Texture2D` icon, :ref:`String` label, :ref:`Callable` callback, :ref:`Callable` key_callback, :ref:`Variant` tag=null, :ref:`Key` accelerator=0, :ref:`int` index=-1 **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`global_menu_add_icon_item` **(** :ref:`String` menu_root, :ref:`Texture2D` icon, :ref:`String` label, :ref:`Callable` callback, :ref:`Callable` key_callback, :ref:`Variant` tag=null, :ref:`Key` accelerator=0, :ref:`int` index=-1 **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`global_menu_add_icon_radio_check_item` **(** :ref:`String` menu_root, :ref:`Texture2D` icon, :ref:`String` label, :ref:`Callable` callback, :ref:`Callable` key_callback, :ref:`Variant` tag=null, :ref:`Key` accelerator=0, :ref:`int` index=-1 **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`global_menu_add_item` **(** :ref:`String` menu_root, :ref:`String` label, :ref:`Callable` callback, :ref:`Callable` key_callback, :ref:`Variant` tag=null, :ref:`Key` accelerator=0, :ref:`int` index=-1 **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`global_menu_add_multistate_item` **(** :ref:`String` menu_root, :ref:`String` label, :ref:`int` max_states, :ref:`int` default_state, :ref:`Callable` callback, :ref:`Callable` key_callback, :ref:`Variant` tag=null, :ref:`Key` accelerator=0, :ref:`int` index=-1 **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`global_menu_add_radio_check_item` **(** :ref:`String` menu_root, :ref:`String` label, :ref:`Callable` callback, :ref:`Callable` key_callback, :ref:`Variant` tag=null, :ref:`Key` accelerator=0, :ref:`int` index=-1 **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`global_menu_add_separator` **(** :ref:`String` menu_root, :ref:`int` index=-1 **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`global_menu_add_submenu_item` **(** :ref:`String` menu_root, :ref:`String` label, :ref:`String` submenu, :ref:`int` index=-1 **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`global_menu_clear` **(** :ref:`String` menu_root **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Key` | :ref:`global_menu_get_item_accelerator` **(** :ref:`String` menu_root, :ref:`int` idx **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Callable` | :ref:`global_menu_get_item_callback` **(** :ref:`String` menu_root, :ref:`int` idx **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`global_menu_get_item_count` **(** :ref:`String` menu_root **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Texture2D` | :ref:`global_menu_get_item_icon` **(** :ref:`String` menu_root, :ref:`int` idx **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`global_menu_get_item_indentation_level` **(** :ref:`String` menu_root, :ref:`int` idx **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`global_menu_get_item_index_from_tag` **(** :ref:`String` menu_root, :ref:`Variant` tag **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`global_menu_get_item_index_from_text` **(** :ref:`String` menu_root, :ref:`String` text **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Callable` | :ref:`global_menu_get_item_key_callback` **(** :ref:`String` menu_root, :ref:`int` idx **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`global_menu_get_item_max_states` **(** :ref:`String` menu_root, :ref:`int` idx **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`global_menu_get_item_state` **(** :ref:`String` menu_root, :ref:`int` idx **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`global_menu_get_item_submenu` **(** :ref:`String` menu_root, :ref:`int` idx **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Variant` | :ref:`global_menu_get_item_tag` **(** :ref:`String` menu_root, :ref:`int` idx **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`global_menu_get_item_text` **(** :ref:`String` menu_root, :ref:`int` idx **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`global_menu_get_item_tooltip` **(** :ref:`String` menu_root, :ref:`int` idx **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`global_menu_is_item_checkable` **(** :ref:`String` menu_root, :ref:`int` idx **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`global_menu_is_item_checked` **(** :ref:`String` menu_root, :ref:`int` idx **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`global_menu_is_item_disabled` **(** :ref:`String` menu_root, :ref:`int` idx **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`global_menu_is_item_radio_checkable` **(** :ref:`String` menu_root, :ref:`int` idx **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`global_menu_remove_item` **(** :ref:`String` menu_root, :ref:`int` idx **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`global_menu_set_item_accelerator` **(** :ref:`String` menu_root, :ref:`int` idx, :ref:`Key` keycode **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`global_menu_set_item_callback` **(** :ref:`String` menu_root, :ref:`int` idx, :ref:`Callable` callback **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`global_menu_set_item_checkable` **(** :ref:`String` menu_root, :ref:`int` idx, :ref:`bool` checkable **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`global_menu_set_item_checked` **(** :ref:`String` menu_root, :ref:`int` idx, :ref:`bool` checked **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`global_menu_set_item_disabled` **(** :ref:`String` menu_root, :ref:`int` idx, :ref:`bool` disabled **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`global_menu_set_item_icon` **(** :ref:`String` menu_root, :ref:`int` idx, :ref:`Texture2D` icon **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`global_menu_set_item_indentation_level` **(** :ref:`String` menu_root, :ref:`int` idx, :ref:`int` level **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`global_menu_set_item_key_callback` **(** :ref:`String` menu_root, :ref:`int` idx, :ref:`Callable` key_callback **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`global_menu_set_item_max_states` **(** :ref:`String` menu_root, :ref:`int` idx, :ref:`int` max_states **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`global_menu_set_item_radio_checkable` **(** :ref:`String` menu_root, :ref:`int` idx, :ref:`bool` checkable **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`global_menu_set_item_state` **(** :ref:`String` menu_root, :ref:`int` idx, :ref:`int` state **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`global_menu_set_item_submenu` **(** :ref:`String` menu_root, :ref:`int` idx, :ref:`String` submenu **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`global_menu_set_item_tag` **(** :ref:`String` menu_root, :ref:`int` idx, :ref:`Variant` tag **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`global_menu_set_item_text` **(** :ref:`String` menu_root, :ref:`int` idx, :ref:`String` text **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`global_menu_set_item_tooltip` **(** :ref:`String` menu_root, :ref:`int` idx, :ref:`String` tooltip **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`has_feature` **(** :ref:`Feature` feature **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2i` | :ref:`ime_get_selection` **(** **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`ime_get_text` **(** **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_dark_mode` **(** **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_dark_mode_supported` **(** **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_touchscreen_available` **(** **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`keyboard_get_current_layout` **(** **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Key` | :ref:`keyboard_get_keycode_from_physical` **(** :ref:`Key` keycode **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`keyboard_get_layout_count` **(** **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`keyboard_get_layout_language` **(** :ref:`int` index **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`keyboard_get_layout_name` **(** :ref:`int` index **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`keyboard_set_current_layout` **(** :ref:`int` index **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`MouseButtonMask` | :ref:`mouse_get_button_state` **(** **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`MouseMode` | :ref:`mouse_get_mode` **(** **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2i` | :ref:`mouse_get_position` **(** **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`mouse_set_mode` **(** :ref:`MouseMode` mouse_mode **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`process_events` **(** **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`screen_get_dpi` **(** :ref:`int` screen=-1 **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Image` | :ref:`screen_get_image` **(** :ref:`int` screen=-1 **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`screen_get_max_scale` **(** **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`ScreenOrientation` | :ref:`screen_get_orientation` **(** :ref:`int` screen=-1 **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`screen_get_pixel` **(** :ref:`Vector2i` position **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2i` | :ref:`screen_get_position` **(** :ref:`int` screen=-1 **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`screen_get_refresh_rate` **(** :ref:`int` screen=-1 **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`screen_get_scale` **(** :ref:`int` screen=-1 **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2i` | :ref:`screen_get_size` **(** :ref:`int` screen=-1 **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Rect2i` | :ref:`screen_get_usable_rect` **(** :ref:`int` screen=-1 **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`screen_is_kept_on` **(** **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`screen_set_keep_on` **(** :ref:`bool` enable **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`screen_set_orientation` **(** :ref:`ScreenOrientation` orientation, :ref:`int` screen=-1 **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`set_icon` **(** :ref:`Image` image **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`set_native_icon` **(** :ref:`String` filename **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`tablet_get_current_driver` **(** **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`tablet_get_driver_count` **(** **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`tablet_get_driver_name` **(** :ref:`int` idx **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`tablet_set_current_driver` **(** :ref:`String` name **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Dictionary[]` | :ref:`tts_get_voices` **(** **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedStringArray` | :ref:`tts_get_voices_for_language` **(** :ref:`String` language **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`tts_is_paused` **(** **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`tts_is_speaking` **(** **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`tts_pause` **(** **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`tts_resume` **(** **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`tts_set_utterance_callback` **(** :ref:`TTSUtteranceEvent` event, :ref:`Callable` callable **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`tts_speak` **(** :ref:`String` text, :ref:`String` voice, :ref:`int` volume=50, :ref:`float` pitch=1.0, :ref:`float` rate=1.0, :ref:`int` utterance_id=0, :ref:`bool` interrupt=false **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`tts_stop` **(** **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`virtual_keyboard_get_height` **(** **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`virtual_keyboard_hide` **(** **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`virtual_keyboard_show` **(** :ref:`String` existing_text, :ref:`Rect2` position=Rect2(0, 0, 0, 0), :ref:`VirtualKeyboardType` type=0, :ref:`int` max_length=-1, :ref:`int` cursor_start=-1, :ref:`int` cursor_end=-1 **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`warp_mouse` **(** :ref:`Vector2i` position **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`window_can_draw` **(** :ref:`int` window_id=0 **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`window_get_active_popup` **(** **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`window_get_attached_instance_id` **(** :ref:`int` window_id=0 **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`window_get_current_screen` **(** :ref:`int` window_id=0 **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`window_get_flag` **(** :ref:`WindowFlags` flag, :ref:`int` window_id=0 **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2i` | :ref:`window_get_max_size` **(** :ref:`int` window_id=0 **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2i` | :ref:`window_get_min_size` **(** :ref:`int` window_id=0 **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`WindowMode` | :ref:`window_get_mode` **(** :ref:`int` window_id=0 **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`window_get_native_handle` **(** :ref:`HandleType` handle_type, :ref:`int` window_id=0 **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Rect2i` | :ref:`window_get_popup_safe_rect` **(** :ref:`int` window **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2i` | :ref:`window_get_position` **(** :ref:`int` window_id=0 **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2i` | :ref:`window_get_position_with_decorations` **(** :ref:`int` window_id=0 **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector3i` | :ref:`window_get_safe_title_margins` **(** :ref:`int` window_id=0 **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2i` | :ref:`window_get_size` **(** :ref:`int` window_id=0 **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2i` | :ref:`window_get_size_with_decorations` **(** :ref:`int` window_id=0 **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`VSyncMode` | :ref:`window_get_vsync_mode` **(** :ref:`int` window_id=0 **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`window_is_maximize_allowed` **(** :ref:`int` window_id=0 **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`window_maximize_on_title_dbl_click` **(** **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`window_minimize_on_title_dbl_click` **(** **)** |const| | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`window_move_to_foreground` **(** :ref:`int` window_id=0 **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`window_request_attention` **(** :ref:`int` window_id=0 **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`window_set_current_screen` **(** :ref:`int` screen, :ref:`int` window_id=0 **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`window_set_drop_files_callback` **(** :ref:`Callable` callback, :ref:`int` window_id=0 **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`window_set_exclusive` **(** :ref:`int` window_id, :ref:`bool` exclusive **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`window_set_flag` **(** :ref:`WindowFlags` flag, :ref:`bool` enabled, :ref:`int` window_id=0 **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`window_set_ime_active` **(** :ref:`bool` active, :ref:`int` window_id=0 **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`window_set_ime_position` **(** :ref:`Vector2i` position, :ref:`int` window_id=0 **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`window_set_input_event_callback` **(** :ref:`Callable` callback, :ref:`int` window_id=0 **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`window_set_input_text_callback` **(** :ref:`Callable` callback, :ref:`int` window_id=0 **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`window_set_max_size` **(** :ref:`Vector2i` max_size, :ref:`int` window_id=0 **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`window_set_min_size` **(** :ref:`Vector2i` min_size, :ref:`int` window_id=0 **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`window_set_mode` **(** :ref:`WindowMode` mode, :ref:`int` window_id=0 **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`window_set_mouse_passthrough` **(** :ref:`PackedVector2Array` region, :ref:`int` window_id=0 **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`window_set_popup_safe_rect` **(** :ref:`int` window, :ref:`Rect2i` rect **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`window_set_position` **(** :ref:`Vector2i` position, :ref:`int` window_id=0 **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`window_set_rect_changed_callback` **(** :ref:`Callable` callback, :ref:`int` window_id=0 **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`window_set_size` **(** :ref:`Vector2i` size, :ref:`int` window_id=0 **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`window_set_title` **(** :ref:`String` title, :ref:`int` window_id=0 **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`window_set_transient` **(** :ref:`int` window_id, :ref:`int` parent_window_id **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`window_set_vsync_mode` **(** :ref:`VSyncMode` vsync_mode, :ref:`int` window_id=0 **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`window_set_window_buttons_offset` **(** :ref:`Vector2i` offset, :ref:`int` window_id=0 **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`window_set_window_event_callback` **(** :ref:`Callable` callback, :ref:`int` window_id=0 **)** | - +----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`clipboard_get` **(** **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`clipboard_get_primary` **(** **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`clipboard_has` **(** **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`clipboard_set` **(** :ref:`String` clipboard **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`clipboard_set_primary` **(** :ref:`String` clipboard_primary **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`CursorShape` | :ref:`cursor_get_shape` **(** **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`cursor_set_custom_image` **(** :ref:`Resource` cursor, :ref:`CursorShape` shape=0, :ref:`Vector2` hotspot=Vector2(0, 0) **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`cursor_set_shape` **(** :ref:`CursorShape` shape **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Error` | :ref:`dialog_input_text` **(** :ref:`String` title, :ref:`String` description, :ref:`String` existing_text, :ref:`Callable` callback **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Error` | :ref:`dialog_show` **(** :ref:`String` title, :ref:`String` description, :ref:`PackedStringArray` buttons, :ref:`Callable` callback **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`enable_for_stealing_focus` **(** :ref:`int` process_id **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`force_process_and_drop_events` **(** **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`get_accent_color` **(** **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Rect2[]` | :ref:`get_display_cutouts` **(** **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Rect2i` | :ref:`get_display_safe_area` **(** **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_keyboard_focus_screen` **(** **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`get_name` **(** **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_primary_screen` **(** **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_screen_count` **(** **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_screen_from_rect` **(** :ref:`Rect2` rect **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`get_swap_cancel_ok` **(** **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_window_at_screen_position` **(** :ref:`Vector2i` position **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedInt32Array` | :ref:`get_window_list` **(** **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`global_menu_add_check_item` **(** :ref:`String` menu_root, :ref:`String` label, :ref:`Callable` callback=Callable(), :ref:`Callable` key_callback=Callable(), :ref:`Variant` tag=null, :ref:`Key` accelerator=0, :ref:`int` index=-1 **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`global_menu_add_icon_check_item` **(** :ref:`String` menu_root, :ref:`Texture2D` icon, :ref:`String` label, :ref:`Callable` callback=Callable(), :ref:`Callable` key_callback=Callable(), :ref:`Variant` tag=null, :ref:`Key` accelerator=0, :ref:`int` index=-1 **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`global_menu_add_icon_item` **(** :ref:`String` menu_root, :ref:`Texture2D` icon, :ref:`String` label, :ref:`Callable` callback=Callable(), :ref:`Callable` key_callback=Callable(), :ref:`Variant` tag=null, :ref:`Key` accelerator=0, :ref:`int` index=-1 **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`global_menu_add_icon_radio_check_item` **(** :ref:`String` menu_root, :ref:`Texture2D` icon, :ref:`String` label, :ref:`Callable` callback=Callable(), :ref:`Callable` key_callback=Callable(), :ref:`Variant` tag=null, :ref:`Key` accelerator=0, :ref:`int` index=-1 **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`global_menu_add_item` **(** :ref:`String` menu_root, :ref:`String` label, :ref:`Callable` callback=Callable(), :ref:`Callable` key_callback=Callable(), :ref:`Variant` tag=null, :ref:`Key` accelerator=0, :ref:`int` index=-1 **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`global_menu_add_multistate_item` **(** :ref:`String` menu_root, :ref:`String` label, :ref:`int` max_states, :ref:`int` default_state, :ref:`Callable` callback=Callable(), :ref:`Callable` key_callback=Callable(), :ref:`Variant` tag=null, :ref:`Key` accelerator=0, :ref:`int` index=-1 **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`global_menu_add_radio_check_item` **(** :ref:`String` menu_root, :ref:`String` label, :ref:`Callable` callback=Callable(), :ref:`Callable` key_callback=Callable(), :ref:`Variant` tag=null, :ref:`Key` accelerator=0, :ref:`int` index=-1 **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`global_menu_add_separator` **(** :ref:`String` menu_root, :ref:`int` index=-1 **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`global_menu_add_submenu_item` **(** :ref:`String` menu_root, :ref:`String` label, :ref:`String` submenu, :ref:`int` index=-1 **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`global_menu_clear` **(** :ref:`String` menu_root **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Key` | :ref:`global_menu_get_item_accelerator` **(** :ref:`String` menu_root, :ref:`int` idx **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Callable` | :ref:`global_menu_get_item_callback` **(** :ref:`String` menu_root, :ref:`int` idx **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`global_menu_get_item_count` **(** :ref:`String` menu_root **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Texture2D` | :ref:`global_menu_get_item_icon` **(** :ref:`String` menu_root, :ref:`int` idx **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`global_menu_get_item_indentation_level` **(** :ref:`String` menu_root, :ref:`int` idx **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`global_menu_get_item_index_from_tag` **(** :ref:`String` menu_root, :ref:`Variant` tag **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`global_menu_get_item_index_from_text` **(** :ref:`String` menu_root, :ref:`String` text **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Callable` | :ref:`global_menu_get_item_key_callback` **(** :ref:`String` menu_root, :ref:`int` idx **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`global_menu_get_item_max_states` **(** :ref:`String` menu_root, :ref:`int` idx **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`global_menu_get_item_state` **(** :ref:`String` menu_root, :ref:`int` idx **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`global_menu_get_item_submenu` **(** :ref:`String` menu_root, :ref:`int` idx **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Variant` | :ref:`global_menu_get_item_tag` **(** :ref:`String` menu_root, :ref:`int` idx **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`global_menu_get_item_text` **(** :ref:`String` menu_root, :ref:`int` idx **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`global_menu_get_item_tooltip` **(** :ref:`String` menu_root, :ref:`int` idx **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`global_menu_is_item_checkable` **(** :ref:`String` menu_root, :ref:`int` idx **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`global_menu_is_item_checked` **(** :ref:`String` menu_root, :ref:`int` idx **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`global_menu_is_item_disabled` **(** :ref:`String` menu_root, :ref:`int` idx **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`global_menu_is_item_radio_checkable` **(** :ref:`String` menu_root, :ref:`int` idx **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`global_menu_remove_item` **(** :ref:`String` menu_root, :ref:`int` idx **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`global_menu_set_item_accelerator` **(** :ref:`String` menu_root, :ref:`int` idx, :ref:`Key` keycode **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`global_menu_set_item_callback` **(** :ref:`String` menu_root, :ref:`int` idx, :ref:`Callable` callback **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`global_menu_set_item_checkable` **(** :ref:`String` menu_root, :ref:`int` idx, :ref:`bool` checkable **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`global_menu_set_item_checked` **(** :ref:`String` menu_root, :ref:`int` idx, :ref:`bool` checked **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`global_menu_set_item_disabled` **(** :ref:`String` menu_root, :ref:`int` idx, :ref:`bool` disabled **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`global_menu_set_item_icon` **(** :ref:`String` menu_root, :ref:`int` idx, :ref:`Texture2D` icon **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`global_menu_set_item_indentation_level` **(** :ref:`String` menu_root, :ref:`int` idx, :ref:`int` level **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`global_menu_set_item_key_callback` **(** :ref:`String` menu_root, :ref:`int` idx, :ref:`Callable` key_callback **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`global_menu_set_item_max_states` **(** :ref:`String` menu_root, :ref:`int` idx, :ref:`int` max_states **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`global_menu_set_item_radio_checkable` **(** :ref:`String` menu_root, :ref:`int` idx, :ref:`bool` checkable **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`global_menu_set_item_state` **(** :ref:`String` menu_root, :ref:`int` idx, :ref:`int` state **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`global_menu_set_item_submenu` **(** :ref:`String` menu_root, :ref:`int` idx, :ref:`String` submenu **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`global_menu_set_item_tag` **(** :ref:`String` menu_root, :ref:`int` idx, :ref:`Variant` tag **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`global_menu_set_item_text` **(** :ref:`String` menu_root, :ref:`int` idx, :ref:`String` text **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`global_menu_set_item_tooltip` **(** :ref:`String` menu_root, :ref:`int` idx, :ref:`String` tooltip **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`has_feature` **(** :ref:`Feature` feature **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2i` | :ref:`ime_get_selection` **(** **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`ime_get_text` **(** **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_dark_mode` **(** **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_dark_mode_supported` **(** **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_touchscreen_available` **(** **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`keyboard_get_current_layout` **(** **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Key` | :ref:`keyboard_get_keycode_from_physical` **(** :ref:`Key` keycode **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`keyboard_get_layout_count` **(** **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`keyboard_get_layout_language` **(** :ref:`int` index **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`keyboard_get_layout_name` **(** :ref:`int` index **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`keyboard_set_current_layout` **(** :ref:`int` index **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |bitfield|\<:ref:`MouseButtonMask`\> | :ref:`mouse_get_button_state` **(** **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`MouseMode` | :ref:`mouse_get_mode` **(** **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2i` | :ref:`mouse_get_position` **(** **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`mouse_set_mode` **(** :ref:`MouseMode` mouse_mode **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`process_events` **(** **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`screen_get_dpi` **(** :ref:`int` screen=-1 **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Image` | :ref:`screen_get_image` **(** :ref:`int` screen=-1 **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`screen_get_max_scale` **(** **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`ScreenOrientation` | :ref:`screen_get_orientation` **(** :ref:`int` screen=-1 **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`screen_get_pixel` **(** :ref:`Vector2i` position **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2i` | :ref:`screen_get_position` **(** :ref:`int` screen=-1 **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`screen_get_refresh_rate` **(** :ref:`int` screen=-1 **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`screen_get_scale` **(** :ref:`int` screen=-1 **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2i` | :ref:`screen_get_size` **(** :ref:`int` screen=-1 **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Rect2i` | :ref:`screen_get_usable_rect` **(** :ref:`int` screen=-1 **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`screen_is_kept_on` **(** **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`screen_set_keep_on` **(** :ref:`bool` enable **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`screen_set_orientation` **(** :ref:`ScreenOrientation` orientation, :ref:`int` screen=-1 **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`set_icon` **(** :ref:`Image` image **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`set_native_icon` **(** :ref:`String` filename **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`tablet_get_current_driver` **(** **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`tablet_get_driver_count` **(** **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`tablet_get_driver_name` **(** :ref:`int` idx **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`tablet_set_current_driver` **(** :ref:`String` name **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary[]` | :ref:`tts_get_voices` **(** **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedStringArray` | :ref:`tts_get_voices_for_language` **(** :ref:`String` language **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`tts_is_paused` **(** **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`tts_is_speaking` **(** **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`tts_pause` **(** **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`tts_resume` **(** **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`tts_set_utterance_callback` **(** :ref:`TTSUtteranceEvent` event, :ref:`Callable` callable **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`tts_speak` **(** :ref:`String` text, :ref:`String` voice, :ref:`int` volume=50, :ref:`float` pitch=1.0, :ref:`float` rate=1.0, :ref:`int` utterance_id=0, :ref:`bool` interrupt=false **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`tts_stop` **(** **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`virtual_keyboard_get_height` **(** **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`virtual_keyboard_hide` **(** **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`virtual_keyboard_show` **(** :ref:`String` existing_text, :ref:`Rect2` position=Rect2(0, 0, 0, 0), :ref:`VirtualKeyboardType` type=0, :ref:`int` max_length=-1, :ref:`int` cursor_start=-1, :ref:`int` cursor_end=-1 **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`warp_mouse` **(** :ref:`Vector2i` position **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`window_can_draw` **(** :ref:`int` window_id=0 **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`window_get_active_popup` **(** **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`window_get_attached_instance_id` **(** :ref:`int` window_id=0 **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`window_get_current_screen` **(** :ref:`int` window_id=0 **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`window_get_flag` **(** :ref:`WindowFlags` flag, :ref:`int` window_id=0 **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2i` | :ref:`window_get_max_size` **(** :ref:`int` window_id=0 **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2i` | :ref:`window_get_min_size` **(** :ref:`int` window_id=0 **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`WindowMode` | :ref:`window_get_mode` **(** :ref:`int` window_id=0 **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`window_get_native_handle` **(** :ref:`HandleType` handle_type, :ref:`int` window_id=0 **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Rect2i` | :ref:`window_get_popup_safe_rect` **(** :ref:`int` window **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2i` | :ref:`window_get_position` **(** :ref:`int` window_id=0 **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2i` | :ref:`window_get_position_with_decorations` **(** :ref:`int` window_id=0 **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector3i` | :ref:`window_get_safe_title_margins` **(** :ref:`int` window_id=0 **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2i` | :ref:`window_get_size` **(** :ref:`int` window_id=0 **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2i` | :ref:`window_get_size_with_decorations` **(** :ref:`int` window_id=0 **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`VSyncMode` | :ref:`window_get_vsync_mode` **(** :ref:`int` window_id=0 **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`window_is_focused` **(** :ref:`int` window_id=0 **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`window_is_maximize_allowed` **(** :ref:`int` window_id=0 **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`window_maximize_on_title_dbl_click` **(** **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`window_minimize_on_title_dbl_click` **(** **)** |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`window_move_to_foreground` **(** :ref:`int` window_id=0 **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`window_request_attention` **(** :ref:`int` window_id=0 **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`window_set_current_screen` **(** :ref:`int` screen, :ref:`int` window_id=0 **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`window_set_drop_files_callback` **(** :ref:`Callable` callback, :ref:`int` window_id=0 **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`window_set_exclusive` **(** :ref:`int` window_id, :ref:`bool` exclusive **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`window_set_flag` **(** :ref:`WindowFlags` flag, :ref:`bool` enabled, :ref:`int` window_id=0 **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`window_set_ime_active` **(** :ref:`bool` active, :ref:`int` window_id=0 **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`window_set_ime_position` **(** :ref:`Vector2i` position, :ref:`int` window_id=0 **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`window_set_input_event_callback` **(** :ref:`Callable` callback, :ref:`int` window_id=0 **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`window_set_input_text_callback` **(** :ref:`Callable` callback, :ref:`int` window_id=0 **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`window_set_max_size` **(** :ref:`Vector2i` max_size, :ref:`int` window_id=0 **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`window_set_min_size` **(** :ref:`Vector2i` min_size, :ref:`int` window_id=0 **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`window_set_mode` **(** :ref:`WindowMode` mode, :ref:`int` window_id=0 **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`window_set_mouse_passthrough` **(** :ref:`PackedVector2Array` region, :ref:`int` window_id=0 **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`window_set_popup_safe_rect` **(** :ref:`int` window, :ref:`Rect2i` rect **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`window_set_position` **(** :ref:`Vector2i` position, :ref:`int` window_id=0 **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`window_set_rect_changed_callback` **(** :ref:`Callable` callback, :ref:`int` window_id=0 **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`window_set_size` **(** :ref:`Vector2i` size, :ref:`int` window_id=0 **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`window_set_title` **(** :ref:`String` title, :ref:`int` window_id=0 **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`window_set_transient` **(** :ref:`int` window_id, :ref:`int` parent_window_id **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`window_set_vsync_mode` **(** :ref:`VSyncMode` vsync_mode, :ref:`int` window_id=0 **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`window_set_window_buttons_offset` **(** :ref:`Vector2i` offset, :ref:`int` window_id=0 **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`window_set_window_event_callback` **(** :ref:`Callable` callback, :ref:`int` window_id=0 **)** | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator @@ -1649,7 +1651,7 @@ Returns the list of Godot window IDs belonging to this process. .. rst-class:: classref-method -:ref:`int` **global_menu_add_check_item** **(** :ref:`String` menu_root, :ref:`String` label, :ref:`Callable` callback, :ref:`Callable` key_callback, :ref:`Variant` tag=null, :ref:`Key` accelerator=0, :ref:`int` index=-1 **)** +:ref:`int` **global_menu_add_check_item** **(** :ref:`String` menu_root, :ref:`String` label, :ref:`Callable` callback=Callable(), :ref:`Callable` key_callback=Callable(), :ref:`Variant` tag=null, :ref:`Key` accelerator=0, :ref:`int` index=-1 **)** Adds a new checkable item with text ``label`` to the global menu with ID ``menu_root``. @@ -1676,7 +1678,7 @@ An ``accelerator`` can optionally be defined, which is a keyboard shortcut that .. rst-class:: classref-method -:ref:`int` **global_menu_add_icon_check_item** **(** :ref:`String` menu_root, :ref:`Texture2D` icon, :ref:`String` label, :ref:`Callable` callback, :ref:`Callable` key_callback, :ref:`Variant` tag=null, :ref:`Key` accelerator=0, :ref:`int` index=-1 **)** +:ref:`int` **global_menu_add_icon_check_item** **(** :ref:`String` menu_root, :ref:`Texture2D` icon, :ref:`String` label, :ref:`Callable` callback=Callable(), :ref:`Callable` key_callback=Callable(), :ref:`Variant` tag=null, :ref:`Key` accelerator=0, :ref:`int` index=-1 **)** Adds a new checkable item with text ``label`` and icon ``icon`` to the global menu with ID ``menu_root``. @@ -1703,7 +1705,7 @@ An ``accelerator`` can optionally be defined, which is a keyboard shortcut that .. rst-class:: classref-method -:ref:`int` **global_menu_add_icon_item** **(** :ref:`String` menu_root, :ref:`Texture2D` icon, :ref:`String` label, :ref:`Callable` callback, :ref:`Callable` key_callback, :ref:`Variant` tag=null, :ref:`Key` accelerator=0, :ref:`int` index=-1 **)** +:ref:`int` **global_menu_add_icon_item** **(** :ref:`String` menu_root, :ref:`Texture2D` icon, :ref:`String` label, :ref:`Callable` callback=Callable(), :ref:`Callable` key_callback=Callable(), :ref:`Variant` tag=null, :ref:`Key` accelerator=0, :ref:`int` index=-1 **)** Adds a new item with text ``label`` and icon ``icon`` to the global menu with ID ``menu_root``. @@ -1730,7 +1732,7 @@ An ``accelerator`` can optionally be defined, which is a keyboard shortcut that .. rst-class:: classref-method -:ref:`int` **global_menu_add_icon_radio_check_item** **(** :ref:`String` menu_root, :ref:`Texture2D` icon, :ref:`String` label, :ref:`Callable` callback, :ref:`Callable` key_callback, :ref:`Variant` tag=null, :ref:`Key` accelerator=0, :ref:`int` index=-1 **)** +:ref:`int` **global_menu_add_icon_radio_check_item** **(** :ref:`String` menu_root, :ref:`Texture2D` icon, :ref:`String` label, :ref:`Callable` callback=Callable(), :ref:`Callable` key_callback=Callable(), :ref:`Variant` tag=null, :ref:`Key` accelerator=0, :ref:`int` index=-1 **)** Adds a new radio-checkable item with text ``label`` and icon ``icon`` to the global menu with ID ``menu_root``. @@ -1759,7 +1761,7 @@ An ``accelerator`` can optionally be defined, which is a keyboard shortcut that .. rst-class:: classref-method -:ref:`int` **global_menu_add_item** **(** :ref:`String` menu_root, :ref:`String` label, :ref:`Callable` callback, :ref:`Callable` key_callback, :ref:`Variant` tag=null, :ref:`Key` accelerator=0, :ref:`int` index=-1 **)** +:ref:`int` **global_menu_add_item** **(** :ref:`String` menu_root, :ref:`String` label, :ref:`Callable` callback=Callable(), :ref:`Callable` key_callback=Callable(), :ref:`Variant` tag=null, :ref:`Key` accelerator=0, :ref:`int` index=-1 **)** Adds a new item with text ``label`` to the global menu with ID ``menu_root``. @@ -1786,7 +1788,7 @@ An ``accelerator`` can optionally be defined, which is a keyboard shortcut that .. rst-class:: classref-method -:ref:`int` **global_menu_add_multistate_item** **(** :ref:`String` menu_root, :ref:`String` label, :ref:`int` max_states, :ref:`int` default_state, :ref:`Callable` callback, :ref:`Callable` key_callback, :ref:`Variant` tag=null, :ref:`Key` accelerator=0, :ref:`int` index=-1 **)** +:ref:`int` **global_menu_add_multistate_item** **(** :ref:`String` menu_root, :ref:`String` label, :ref:`int` max_states, :ref:`int` default_state, :ref:`Callable` callback=Callable(), :ref:`Callable` key_callback=Callable(), :ref:`Variant` tag=null, :ref:`Key` accelerator=0, :ref:`int` index=-1 **)** Adds a new item with text ``label`` to the global menu with ID ``menu_root``. @@ -1817,7 +1819,7 @@ An ``accelerator`` can optionally be defined, which is a keyboard shortcut that .. rst-class:: classref-method -:ref:`int` **global_menu_add_radio_check_item** **(** :ref:`String` menu_root, :ref:`String` label, :ref:`Callable` callback, :ref:`Callable` key_callback, :ref:`Variant` tag=null, :ref:`Key` accelerator=0, :ref:`int` index=-1 **)** +:ref:`int` **global_menu_add_radio_check_item** **(** :ref:`String` menu_root, :ref:`String` label, :ref:`Callable` callback=Callable(), :ref:`Callable` key_callback=Callable(), :ref:`Variant` tag=null, :ref:`Key` accelerator=0, :ref:`int` index=-1 **)** Adds a new radio-checkable item with text ``label`` to the global menu with ID ``menu_root``. @@ -2567,7 +2569,7 @@ Sets the active keyboard layout. .. rst-class:: classref-method -:ref:`MouseButtonMask` **mouse_get_button_state** **(** **)** |const| +|bitfield|\<:ref:`MouseButtonMask`\> **mouse_get_button_state** **(** **)** |const| Returns the current state of mouse buttons (whether each button is pressed) as a bitmask. If multiple mouse buttons are pressed at the same time, the bits are added together. Equivalent to :ref:`Input.get_mouse_button_mask`. @@ -2829,6 +2831,8 @@ void **screen_set_orientation** **(** :ref:`ScreenOrientation`. +\ **Note:** On iOS, this method has no effect if :ref:`ProjectSettings.display/window/handheld/orientation` is not set to :ref:`SCREEN_SENSOR`. + .. rst-class:: classref-item-separator ---- @@ -3345,6 +3349,18 @@ Returns the V-Sync mode of the given window. ---- +.. _class_DisplayServer_method_window_is_focused: + +.. rst-class:: classref-method + +:ref:`bool` **window_is_focused** **(** :ref:`int` window_id=0 **)** |const| + +Returns ``true`` if the window specified by ``window_id`` is focused. + +.. rst-class:: classref-item-separator + +---- + .. _class_DisplayServer_method_window_is_maximize_allowed: .. rst-class:: classref-method @@ -3745,3 +3761,4 @@ Sets the ``callback`` that will be called when an event occurs in the window spe .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_dtlsserver.rst b/classes/class_dtlsserver.rst index 69da23ef98b9..08c1c0ef519d 100644 --- a/classes/class_dtlsserver.rst +++ b/classes/class_dtlsserver.rst @@ -223,3 +223,4 @@ Try to initiate the DTLS handshake with the given ``udp_peer`` which must be alr .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_editorcommandpalette.rst b/classes/class_editorcommandpalette.rst index 989cb97abf4d..5ff05a08400f 100644 --- a/classes/class_editorcommandpalette.rst +++ b/classes/class_editorcommandpalette.rst @@ -115,3 +115,4 @@ Removes the custom command from EditorCommandPalette. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_editordebuggerplugin.rst b/classes/class_editordebuggerplugin.rst index 0a90bf7ef165..2f6f869ace71 100644 --- a/classes/class_editordebuggerplugin.rst +++ b/classes/class_editordebuggerplugin.rst @@ -159,3 +159,4 @@ Note: Not sessions in the array may be inactive, check their state via :ref:`Edi .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_editordebuggersession.rst b/classes/class_editordebuggersession.rst index a9b79a58a189..8e485aff00f6 100644 --- a/classes/class_editordebuggersession.rst +++ b/classes/class_editordebuggersession.rst @@ -195,3 +195,4 @@ Toggle the given ``profiler`` on the attached remote instance, optionally passin .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_editorexportplatform.rst b/classes/class_editorexportplatform.rst index 3a1d5f211caa..7c3527cfa8d4 100644 --- a/classes/class_editorexportplatform.rst +++ b/classes/class_editorexportplatform.rst @@ -31,3 +31,4 @@ Used in scripting by :ref:`EditorExportPlugin` to conf .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_editorexportplatformandroid.rst b/classes/class_editorexportplatformandroid.rst index 15b3a9d478d1..65dd29c0b758 100644 --- a/classes/class_editorexportplatformandroid.rst +++ b/classes/class_editorexportplatformandroid.rst @@ -2724,3 +2724,4 @@ Application version visible to the user. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_editorexportplatformios.rst b/classes/class_editorexportplatformios.rst index a018301797e3..f13e21f3ce55 100644 --- a/classes/class_editorexportplatformios.rst +++ b/classes/class_editorexportplatformios.rst @@ -830,3 +830,4 @@ If ``true``, the app "Documents" folder can be accessed via iTunes file sharing. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_editorexportplatformlinuxbsd.rst b/classes/class_editorexportplatformlinuxbsd.rst index e83d1c26ac76..7d1d33de8dc9 100644 --- a/classes/class_editorexportplatformlinuxbsd.rst +++ b/classes/class_editorexportplatformlinuxbsd.rst @@ -38,7 +38,7 @@ Properties +-----------------------------+-----------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`custom_template/release` | +-----------------------------+-----------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`debug/export_console_script` | + | :ref:`int` | :ref:`debug/export_console_wrapper` | +-----------------------------+-----------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`ssh_remote_deploy/cleanup_script` | +-----------------------------+-----------------------------------------------------------------------------------------------------------------------+ @@ -124,13 +124,13 @@ Path to the custom export template. If left empty, default template is used. ---- -.. _class_EditorExportPlatformLinuxBSD_property_debug/export_console_script: +.. _class_EditorExportPlatformLinuxBSD_property_debug/export_console_wrapper: .. rst-class:: classref-property -:ref:`int` **debug/export_console_script** +:ref:`int` **debug/export_console_wrapper** -If ``true``, a console wrapper script is exported alongside the main executable, which allows running the project with enabled console output. +If ``true``, a console wrapper is exported alongside the main executable, which allows running the project with enabled console output. .. rst-class:: classref-item-separator @@ -290,3 +290,4 @@ If ``true``, project textures are exported in the S3TC format. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_editorexportplatformmacos.rst b/classes/class_editorexportplatformmacos.rst index 05399fb59581..051502f5768e 100644 --- a/classes/class_editorexportplatformmacos.rst +++ b/classes/class_editorexportplatformmacos.rst @@ -120,7 +120,7 @@ Properties +---------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`custom_template/release` | +---------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`debug/export_console_script` | + | :ref:`int` | :ref:`debug/export_console_wrapper` | +---------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`display/high_res` | +---------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -758,13 +758,13 @@ Path to the custom export template. If left empty, default template is used. ---- -.. _class_EditorExportPlatformMacOS_property_debug/export_console_script: +.. _class_EditorExportPlatformMacOS_property_debug/export_console_wrapper: .. rst-class:: classref-property -:ref:`int` **debug/export_console_script** +:ref:`int` **debug/export_console_wrapper** -If enabled, a script file that can be used to run the application with console output is created alongside the exported application. +If enabled, a wrapper that can be used to run the application with console output is created alongside the exported application. .. rst-class:: classref-item-separator @@ -1318,3 +1318,4 @@ Xcode version used to build application executable. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_editorexportplatformpc.rst b/classes/class_editorexportplatformpc.rst index 1e5bbfb0ec0c..e30e1e4d554a 100644 --- a/classes/class_editorexportplatformpc.rst +++ b/classes/class_editorexportplatformpc.rst @@ -22,3 +22,4 @@ Base class for the desktop platform exporter (Windows and Linux/BSD). .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_editorexportplatformweb.rst b/classes/class_editorexportplatformweb.rst index a9833091c665..2f2f41ee0e31 100644 --- a/classes/class_editorexportplatformweb.rst +++ b/classes/class_editorexportplatformweb.rst @@ -340,3 +340,4 @@ The canvas resize policy determines how the canvas should be resized by Godot. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_editorexportplatformwindows.rst b/classes/class_editorexportplatformwindows.rst index 85972493f457..1ffcb1d4826e 100644 --- a/classes/class_editorexportplatformwindows.rst +++ b/classes/class_editorexportplatformwindows.rst @@ -78,7 +78,7 @@ Properties +---------------------------------------------------+----------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`custom_template/release` | +---------------------------------------------------+----------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`debug/export_console_script` | + | :ref:`int` | :ref:`debug/export_console_wrapper` | +---------------------------------------------------+----------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`ssh_remote_deploy/cleanup_script` | +---------------------------------------------------+----------------------------------------------------------------------------------------------------------------------+ @@ -410,11 +410,11 @@ Path to the custom export template. If left empty, default template is used. ---- -.. _class_EditorExportPlatformWindows_property_debug/export_console_script: +.. _class_EditorExportPlatformWindows_property_debug/export_console_wrapper: .. rst-class:: classref-property -:ref:`int` **debug/export_console_script** +:ref:`int` **debug/export_console_wrapper** If ``true``, a console wrapper executable is exported alongside the main executable, which allows running the project with enabled console output. @@ -576,3 +576,4 @@ If ``true``, project textures are exported in the S3TC format. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_editorexportplugin.rst b/classes/class_editorexportplugin.rst index dee7f58d46ff..77d4d60e3e0b 100644 --- a/classes/class_editorexportplugin.rst +++ b/classes/class_editorexportplugin.rst @@ -440,3 +440,4 @@ To be called inside :ref:`_export_file` | :ref:`_can_handle` **(** :ref:`Object` object **)** |virtual| |const| | - +-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_parse_begin` **(** :ref:`Object` object **)** |virtual| | - +-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_parse_category` **(** :ref:`Object` object, :ref:`String` category **)** |virtual| | - +-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_parse_end` **(** :ref:`Object` object **)** |virtual| | - +-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_parse_group` **(** :ref:`Object` object, :ref:`String` group **)** |virtual| | - +-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_parse_property` **(** :ref:`Object` object, :ref:`Variant.Type` type, :ref:`String` name, :ref:`PropertyHint` hint_type, :ref:`String` hint_string, :ref:`PropertyUsageFlags` usage_flags, :ref:`bool` wide **)** |virtual| | - +-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`add_custom_control` **(** :ref:`Control` control **)** | - +-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`add_property_editor` **(** :ref:`String` property, :ref:`Control` editor, :ref:`bool` add_to_end=false **)** | - +-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`add_property_editor_for_multiple_properties` **(** :ref:`String` label, :ref:`PackedStringArray` properties, :ref:`Control` editor **)** | - +-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +-------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_can_handle` **(** :ref:`Object` object **)** |virtual| |const| | + +-------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_parse_begin` **(** :ref:`Object` object **)** |virtual| | + +-------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_parse_category` **(** :ref:`Object` object, :ref:`String` category **)** |virtual| | + +-------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_parse_end` **(** :ref:`Object` object **)** |virtual| | + +-------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_parse_group` **(** :ref:`Object` object, :ref:`String` group **)** |virtual| | + +-------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_parse_property` **(** :ref:`Object` object, :ref:`Variant.Type` type, :ref:`String` name, :ref:`PropertyHint` hint_type, :ref:`String` hint_string, |bitfield|\<:ref:`PropertyUsageFlags`\> usage_flags, :ref:`bool` wide **)** |virtual| | + +-------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`add_custom_control` **(** :ref:`Control` control **)** | + +-------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`add_property_editor` **(** :ref:`String` property, :ref:`Control` editor, :ref:`bool` add_to_end=false **)** | + +-------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`add_property_editor_for_multiple_properties` **(** :ref:`String` label, :ref:`PackedStringArray` properties, :ref:`Control` editor **)** | + +-------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator @@ -141,7 +141,7 @@ Called to allow adding controls at the beginning of a group or a sub-group in th .. rst-class:: classref-method -:ref:`bool` **_parse_property** **(** :ref:`Object` object, :ref:`Variant.Type` type, :ref:`String` name, :ref:`PropertyHint` hint_type, :ref:`String` hint_string, :ref:`PropertyUsageFlags` usage_flags, :ref:`bool` wide **)** |virtual| +:ref:`bool` **_parse_property** **(** :ref:`Object` object, :ref:`Variant.Type` type, :ref:`String` name, :ref:`PropertyHint` hint_type, :ref:`String` hint_string, |bitfield|\<:ref:`PropertyUsageFlags`\> usage_flags, :ref:`bool` wide **)** |virtual| Called to allow adding property-specific editors to the property list for ``object``. The added editor control must extend :ref:`EditorProperty`. Returning ``true`` removes the built-in editor for this property, otherwise allows to insert a custom editor before the built-in one. @@ -187,3 +187,4 @@ Adds an editor that allows modifying multiple properties. The ``editor`` control .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_editorinterface.rst b/classes/class_editorinterface.rst index 0a68c6d0843f..05f420b85b55 100644 --- a/classes/class_editorinterface.rst +++ b/classes/class_editorinterface.rst @@ -96,6 +96,8 @@ Methods +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Texture2D[]` | :ref:`make_mesh_previews` **(** :ref:`Mesh[]` meshes, :ref:`int` preview_size **)** | +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`mark_scene_as_unsaved` **(** **)** | + +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`open_scene_from_path` **(** :ref:`String` scene_filepath **)** | +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`play_current_scene` **(** **)** | @@ -491,6 +493,18 @@ Returns mesh previews rendered at the given size as an :ref:`Array` ---- +.. _class_EditorInterface_method_mark_scene_as_unsaved: + +.. rst-class:: classref-method + +void **mark_scene_as_unsaved** **(** **)** + +Marks the current scene tab as unsaved. + +.. rst-class:: classref-item-separator + +---- + .. _class_EditorInterface_method_open_scene_from_path: .. rst-class:: classref-method @@ -693,3 +707,4 @@ Stops the scene that is currently playing. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_editornode3dgizmo.rst b/classes/class_editornode3dgizmo.rst index b2f526d95c9e..f8af51d8e78e 100644 --- a/classes/class_editornode3dgizmo.rst +++ b/classes/class_editornode3dgizmo.rst @@ -396,3 +396,4 @@ Sets the reference :ref:`Node3D` node for the gizmo. ``node`` must .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_editornode3dgizmoplugin.rst b/classes/class_editornode3dgizmoplugin.rst index 786f20104106..e1e7c6f0193a 100644 --- a/classes/class_editornode3dgizmoplugin.rst +++ b/classes/class_editornode3dgizmoplugin.rst @@ -379,3 +379,4 @@ Gets material from the internal list of materials. If an :ref:`EditorNode3DGizmo .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_editorpaths.rst b/classes/class_editorpaths.rst index fba3d127bf88..a8deebe48c4f 100644 --- a/classes/class_editorpaths.rst +++ b/classes/class_editorpaths.rst @@ -169,3 +169,4 @@ Self-contained mode can be enabled by creating a file named ``._sc_`` or ``_sc_` .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_editorplugin.rst b/classes/class_editorplugin.rst index 91a9eb001758..b514b400bf66 100644 --- a/classes/class_editorplugin.rst +++ b/classes/class_editorplugin.rst @@ -1591,3 +1591,4 @@ Updates the overlays of the 2D and 3D editor viewport. Causes methods :ref:`_for .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_editorproperty.rst b/classes/class_editorproperty.rst index a5ff52a20981..14f354e12f43 100644 --- a/classes/class_editorproperty.rst +++ b/classes/class_editorproperty.rst @@ -441,3 +441,4 @@ Forces refresh of the property display. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_editorresourceconversionplugin.rst b/classes/class_editorresourceconversionplugin.rst index 6cb08d143390..244d3a8cedbc 100644 --- a/classes/class_editorresourceconversionplugin.rst +++ b/classes/class_editorresourceconversionplugin.rst @@ -108,3 +108,4 @@ Called to determine whether a particular :ref:`Resource` can be .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_editorresourcepicker.rst b/classes/class_editorresourcepicker.rst index 6d3ac953c8d3..411c23f1cbf8 100644 --- a/classes/class_editorresourcepicker.rst +++ b/classes/class_editorresourcepicker.rst @@ -224,3 +224,4 @@ Sets the toggle mode state for the main button. Works only if :ref:`toggle_mode< .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_editorresourcepreview.rst b/classes/class_editorresourcepreview.rst index d7f89c79b6ba..9baa8502ece5 100644 --- a/classes/class_editorresourcepreview.rst +++ b/classes/class_editorresourcepreview.rst @@ -135,3 +135,4 @@ Removes a custom preview generator. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_editorresourcepreviewgenerator.rst b/classes/class_editorresourcepreviewgenerator.rst index f2c3d300ac1d..546c4788ef78 100644 --- a/classes/class_editorresourcepreviewgenerator.rst +++ b/classes/class_editorresourcepreviewgenerator.rst @@ -128,3 +128,4 @@ Returns ``true`` if your generator supports the resource of type ``type``. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_editorresourcetooltipplugin.rst b/classes/class_editorresourcetooltipplugin.rst index d4a7ad3cd520..afe1b0fa77c6 100644 --- a/classes/class_editorresourcetooltipplugin.rst +++ b/classes/class_editorresourcetooltipplugin.rst @@ -102,3 +102,4 @@ Requests a thumbnail for the given :ref:`TextureRect`. The th .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_editorsceneformatimporter.rst b/classes/class_editorsceneformatimporter.rst index 452971cc283e..9845090ddd8b 100644 --- a/classes/class_editorsceneformatimporter.rst +++ b/classes/class_editorsceneformatimporter.rst @@ -183,3 +183,4 @@ void **_get_import_options** **(** :ref:`String` path **)** |virtu .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_editorsceneformatimporterblend.rst b/classes/class_editorsceneformatimporterblend.rst index 709560d4de26..cf4875a8a8dd 100644 --- a/classes/class_editorsceneformatimporterblend.rst +++ b/classes/class_editorsceneformatimporterblend.rst @@ -35,3 +35,4 @@ Internally, the EditorSceneFormatImporterBlend uses the Blender glTF "Use Origin .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_editorsceneformatimporterfbx.rst b/classes/class_editorsceneformatimporterfbx.rst index 77d84625c34e..d1ad78a1df32 100644 --- a/classes/class_editorsceneformatimporterfbx.rst +++ b/classes/class_editorsceneformatimporterfbx.rst @@ -31,3 +31,4 @@ This importer is only used if :ref:`ProjectSettings.filesystem/import/fbx/enable .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_editorsceneformatimportergltf.rst b/classes/class_editorsceneformatimportergltf.rst index d31b6f742278..ff958808b8d2 100644 --- a/classes/class_editorsceneformatimportergltf.rst +++ b/classes/class_editorsceneformatimportergltf.rst @@ -22,3 +22,4 @@ EditorSceneFormatImporterGLTF .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_editorscenepostimport.rst b/classes/class_editorscenepostimport.rst index 43f1ba3803f3..83fbf5537a4d 100644 --- a/classes/class_editorscenepostimport.rst +++ b/classes/class_editorscenepostimport.rst @@ -131,3 +131,4 @@ Returns the source file path which got imported (e.g. ``res://scene.dae``). .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_editorscenepostimportplugin.rst b/classes/class_editorscenepostimportplugin.rst index 5d51369f07a1..8bf5b23b824a 100644 --- a/classes/class_editorscenepostimportplugin.rst +++ b/classes/class_editorscenepostimportplugin.rst @@ -275,3 +275,4 @@ Query the value of an option. This function can only be called from those queryi .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_editorscript.rst b/classes/class_editorscript.rst index 2883c4987b26..8023455c71ee 100644 --- a/classes/class_editorscript.rst +++ b/classes/class_editorscript.rst @@ -134,3 +134,4 @@ Returns the Editor's currently active scene. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_editorscriptpicker.rst b/classes/class_editorscriptpicker.rst index 89d1dab03762..860aff9d366d 100644 --- a/classes/class_editorscriptpicker.rst +++ b/classes/class_editorscriptpicker.rst @@ -63,3 +63,4 @@ The owner :ref:`Node` of the script property that holds the edited r .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_editorselection.rst b/classes/class_editorselection.rst index 2c30a8445e00..4d328222480c 100644 --- a/classes/class_editorselection.rst +++ b/classes/class_editorselection.rst @@ -133,3 +133,4 @@ Removes a node from the selection. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_editorsettings.rst b/classes/class_editorsettings.rst index 7b7e8cc0d02e..cc9c199e83ce 100644 --- a/classes/class_editorsettings.rst +++ b/classes/class_editorsettings.rst @@ -58,9 +58,17 @@ Properties .. table:: :widths: auto + +-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`debugger/auto_switch_to_remote_scene_tree` | +-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`debugger/profiler_frame_history_size` | +-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`debugger/profiler_frame_max_functions` | + +-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`debugger/remote_inspect_refresh_interval` | + +-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`debugger/remote_scene_tree_refresh_interval` | + +-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`docks/filesystem/always_show_folders` | +-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`docks/filesystem/textfile_extensions` | @@ -399,6 +407,8 @@ Properties +-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`text_editor/appearance/gutters/show_line_numbers` | +-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`text_editor/appearance/lines/autowrap_mode` | + +-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`text_editor/appearance/lines/code_folding` | +-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`text_editor/appearance/lines/word_wrap` | @@ -629,6 +639,18 @@ Emitted after any editor setting has changed. It's used by various editor plugin Property Descriptions --------------------- +.. _class_EditorSettings_property_debugger/auto_switch_to_remote_scene_tree: + +.. rst-class:: classref-property + +:ref:`bool` **debugger/auto_switch_to_remote_scene_tree** + +If ``true``, automatically switches to the **Remote** scene tree when running the project from the editor. If ``false``, stays on the **Local** scene tree when running the project from the editor. + +.. rst-class:: classref-item-separator + +---- + .. _class_EditorSettings_property_debugger/profiler_frame_history_size: .. rst-class:: classref-property @@ -641,6 +663,44 @@ The size of the profiler's frame history. The default value (3600) allows seeing ---- +.. _class_EditorSettings_property_debugger/profiler_frame_max_functions: + +.. rst-class:: classref-property + +:ref:`int` **debugger/profiler_frame_max_functions** + +The maximum number of script functions that can be displayed per frame in the profiler. If there are more script functions called in a given profiler frame, these functions will be discarded from the profiling results entirely. + +\ **Note:** This setting is only read when the profiler is first started, so changing it during profiling will have no effect. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorSettings_property_debugger/remote_inspect_refresh_interval: + +.. rst-class:: classref-property + +:ref:`float` **debugger/remote_inspect_refresh_interval** + +The refresh interval for the remote inspector's properties (in seconds). Lower values are more reactive, but may cause stuttering while the project is running from the editor and the **Remote** scene tree is selected in the Scene tree dock. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorSettings_property_debugger/remote_scene_tree_refresh_interval: + +.. rst-class:: classref-property + +:ref:`float` **debugger/remote_scene_tree_refresh_interval** + +The refresh interval for the remote scene tree (in seconds). Lower values are more reactive, but may cause stuttering while the project is running from the editor and the **Remote** scene tree is selected in the Scene tree dock. + +.. rst-class:: classref-item-separator + +---- + .. _class_EditorSettings_property_docks/filesystem/always_show_folders: .. rst-class:: classref-property @@ -997,7 +1057,7 @@ The grid division bias to use in the 3D editor. Negative values will cause small :ref:`int` **editors/3d/grid_division_level_max** -The smallest grid division to use in the 3D editor, specified as a power of 2. The grid will not be able to get larger than ``1 ^ grid_division_level_max`` units. By default, this means grid divisions cannot get smaller than 100 units each, no matter how far away the camera is from the grid. +The largest grid division to use in the 3D editor. Together with :ref:`editors/3d/primary_grid_steps`, this determines how large the grid divisions can be. The grid divisions will not be able to get larger than ``primary_grid_steps ^ grid_division_level_max`` units. By default, when :ref:`editors/3d/primary_grid_steps` is ``8``, this means grid divisions cannot get larger than ``64`` uints each (so primary grid lines are ``512`` uints apart), no matter how far away the camera is from the grid. .. rst-class:: classref-item-separator @@ -1009,7 +1069,7 @@ The smallest grid division to use in the 3D editor, specified as a power of 2. T :ref:`int` **editors/3d/grid_division_level_min** -The smallest grid division to use in the 3D editor, specified as a power of 2. The grid will not be able to get smaller than ``1 ^ grid_division_level_min`` units. By default, this means grid divisions cannot get smaller than 1 unit each, no matter how close the camera is from the grid. +The smallest grid division to use in the 3D editor. Together with :ref:`editors/3d/primary_grid_steps`, this determines how small the grid divisions can be. The grid divisions will not be able to get smaller than ``primary_grid_steps ^ grid_division_level_min`` units. By default, this means grid divisions cannot get smaller than 1 unit each, no matter how close the camera is from the grid. .. rst-class:: classref-item-separator @@ -2777,6 +2837,18 @@ If ``true``, displays line numbers in a gutter at the left. ---- +.. _class_EditorSettings_property_text_editor/appearance/lines/autowrap_mode: + +.. rst-class:: classref-property + +:ref:`int` **text_editor/appearance/lines/autowrap_mode** + +If :ref:`text_editor/appearance/lines/word_wrap` is set to ``1``, sets text wrapping mode. To see how each mode behaves, see :ref:`AutowrapMode`. + +.. rst-class:: classref-item-separator + +---- + .. _class_EditorSettings_property_text_editor/appearance/lines/code_folding: .. rst-class:: classref-property @@ -3904,3 +3976,4 @@ Sets the ``value`` of the setting specified by ``name``. This is equivalent to u .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_editorspinslider.rst b/classes/class_editorspinslider.rst index 1fcd6622ceb2..267c1ade6dce 100644 --- a/classes/class_editorspinslider.rst +++ b/classes/class_editorspinslider.rst @@ -29,23 +29,23 @@ Properties .. table:: :widths: auto - +------------------------------------------+-----------------------------------------------------------------+------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`flat` | ``false`` | - +------------------------------------------+-----------------------------------------------------------------+------------------------------------------------------------------------------+ - | :ref:`FocusMode` | focus_mode | ``2`` (overrides :ref:`Control`) | - +------------------------------------------+-----------------------------------------------------------------+------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`hide_slider` | ``false`` | - +------------------------------------------+-----------------------------------------------------------------+------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`label` | ``""`` | - +------------------------------------------+-----------------------------------------------------------------+------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`read_only` | ``false`` | - +------------------------------------------+-----------------------------------------------------------------+------------------------------------------------------------------------------+ - | :ref:`SizeFlags` | size_flags_vertical | ``1`` (overrides :ref:`Control`) | - +------------------------------------------+-----------------------------------------------------------------+------------------------------------------------------------------------------+ - | :ref:`float` | step | ``1.0`` (overrides :ref:`Range`) | - +------------------------------------------+-----------------------------------------------------------------+------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`suffix` | ``""`` | - +------------------------------------------+-----------------------------------------------------------------+------------------------------------------------------------------------------+ + +--------------------------------------------------------+-----------------------------------------------------------------+------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`flat` | ``false`` | + +--------------------------------------------------------+-----------------------------------------------------------------+------------------------------------------------------------------------------+ + | :ref:`FocusMode` | focus_mode | ``2`` (overrides :ref:`Control`) | + +--------------------------------------------------------+-----------------------------------------------------------------+------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`hide_slider` | ``false`` | + +--------------------------------------------------------+-----------------------------------------------------------------+------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`label` | ``""`` | + +--------------------------------------------------------+-----------------------------------------------------------------+------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`read_only` | ``false`` | + +--------------------------------------------------------+-----------------------------------------------------------------+------------------------------------------------------------------------------+ + | |bitfield|\<:ref:`SizeFlags`\> | size_flags_vertical | ``1`` (overrides :ref:`Control`) | + +--------------------------------------------------------+-----------------------------------------------------------------+------------------------------------------------------------------------------+ + | :ref:`float` | step | ``1.0`` (overrides :ref:`Range`) | + +--------------------------------------------------------+-----------------------------------------------------------------+------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`suffix` | ``""`` | + +--------------------------------------------------------+-----------------------------------------------------------------+------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator @@ -196,3 +196,4 @@ The suffix to display after the value (in a faded color). This should generally .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_editorsyntaxhighlighter.rst b/classes/class_editorsyntaxhighlighter.rst index 6357b895f190..aad1fbef8415 100644 --- a/classes/class_editorsyntaxhighlighter.rst +++ b/classes/class_editorsyntaxhighlighter.rst @@ -72,3 +72,4 @@ Virtual method which can be overridden to return the supported language names. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_editortranslationparserplugin.rst b/classes/class_editortranslationparserplugin.rst index c4120f22586f..0d6ee3ec7695 100644 --- a/classes/class_editortranslationparserplugin.rst +++ b/classes/class_editortranslationparserplugin.rst @@ -184,3 +184,4 @@ Override this method to define a custom parsing logic to extract the translatabl .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_editorundoredomanager.rst b/classes/class_editorundoredomanager.rst index 02305cd2512b..9b57fe36c6aa 100644 --- a/classes/class_editorundoredomanager.rst +++ b/classes/class_editorundoredomanager.rst @@ -43,29 +43,29 @@ Methods .. table:: :widths: auto - +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`add_do_method` **(** :ref:`Object` object, :ref:`StringName` method, ... **)** |vararg| | - +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`add_do_property` **(** :ref:`Object` object, :ref:`StringName` property, :ref:`Variant` value **)** | - +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`add_do_reference` **(** :ref:`Object` object **)** | - +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`add_undo_method` **(** :ref:`Object` object, :ref:`StringName` method, ... **)** |vararg| | - +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`add_undo_property` **(** :ref:`Object` object, :ref:`StringName` property, :ref:`Variant` value **)** | - +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`add_undo_reference` **(** :ref:`Object` object **)** | - +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`commit_action` **(** :ref:`bool` execute=true **)** | - +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`create_action` **(** :ref:`String` name, :ref:`MergeMode` merge_mode=0, :ref:`Object` custom_context=null **)** | - +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`UndoRedo` | :ref:`get_history_undo_redo` **(** :ref:`int` id **)** |const| | - +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_object_history_id` **(** :ref:`Object` object **)** |const| | - +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_committing_action` **(** **)** |const| | - +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +---------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`add_do_method` **(** :ref:`Object` object, :ref:`StringName` method, ... **)** |vararg| | + +---------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`add_do_property` **(** :ref:`Object` object, :ref:`StringName` property, :ref:`Variant` value **)** | + +---------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`add_do_reference` **(** :ref:`Object` object **)** | + +---------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`add_undo_method` **(** :ref:`Object` object, :ref:`StringName` method, ... **)** |vararg| | + +---------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`add_undo_property` **(** :ref:`Object` object, :ref:`StringName` property, :ref:`Variant` value **)** | + +---------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`add_undo_reference` **(** :ref:`Object` object **)** | + +---------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`commit_action` **(** :ref:`bool` execute=true **)** | + +---------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`create_action` **(** :ref:`String` name, :ref:`MergeMode` merge_mode=0, :ref:`Object` custom_context=null, :ref:`bool` backward_undo_ops=false **)** | + +---------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`UndoRedo` | :ref:`get_history_undo_redo` **(** :ref:`int` id **)** |const| | + +---------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_object_history_id` **(** :ref:`Object` object **)** |const| | + +---------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_committing_action` **(** **)** |const| | + +---------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator @@ -240,7 +240,7 @@ Commit the action. If ``execute`` is true (default), all "do" methods/properties .. rst-class:: classref-method -void **create_action** **(** :ref:`String` name, :ref:`MergeMode` merge_mode=0, :ref:`Object` custom_context=null **)** +void **create_action** **(** :ref:`String` name, :ref:`MergeMode` merge_mode=0, :ref:`Object` custom_context=null, :ref:`bool` backward_undo_ops=false **)** Create a new action. After this is called, do all your calls to :ref:`add_do_method`, :ref:`add_undo_method`, :ref:`add_do_property`, and :ref:`add_undo_property`, then commit the action with :ref:`commit_action`. @@ -248,6 +248,8 @@ The way actions are merged is dictated by the ``merge_mode`` argument. See :ref: If ``custom_context`` object is provided, it will be used for deducing target history (instead of using the first operation). +The way undo operation are ordered in actions is dictated by ``backward_undo_ops``. When ``backward_undo_ops`` is ``false`` undo option are ordered in the same order they were added. Which means the first operation to be added will be the first to be undone. + .. rst-class:: classref-item-separator ---- @@ -294,3 +296,4 @@ Returns ``true`` if the **EditorUndoRedoManager** is currently committing the ac .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_editorvcsinterface.rst b/classes/class_editorvcsinterface.rst index 800821fc555c..39a5dd884a47 100644 --- a/classes/class_editorvcsinterface.rst +++ b/classes/class_editorvcsinterface.rst @@ -573,3 +573,4 @@ Pops up an error message in the edior which is shown as coming from the underlyi .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_encodedobjectasid.rst b/classes/class_encodedobjectasid.rst index b9299ec076a5..662dd39d5eb5 100644 --- a/classes/class_encodedobjectasid.rst +++ b/classes/class_encodedobjectasid.rst @@ -63,3 +63,4 @@ The :ref:`Object` identifier stored in this **EncodedObjectAsID** .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_enetconnection.rst b/classes/class_enetconnection.rst index 4fb54cc86073..8e7c9b69eb08 100644 --- a/classes/class_enetconnection.rst +++ b/classes/class_enetconnection.rst @@ -71,6 +71,8 @@ Methods +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Array` | :ref:`service` **(** :ref:`int` timeout=0 **)** | +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`socket_send` **(** :ref:`String` destination_address, :ref:`int` destination_port, :ref:`PackedByteArray` packet **)** | + +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator @@ -440,9 +442,26 @@ Waits for events on the host specified and shuttles packets between the host and Call this function regularly to handle connections, disconnections, and to receive new packets. +.. rst-class:: classref-item-separator + +---- + +.. _class_ENetConnection_method_socket_send: + +.. rst-class:: classref-method + +void **socket_send** **(** :ref:`String` destination_address, :ref:`int` destination_port, :ref:`PackedByteArray` packet **)** + +Sends a ``packet`` toward a destination from the address and port currently bound by this ENetConnection instance. + +This is useful as it serves to establish entries in NAT routing tables on all devices between this bound instance and the public facing internet, allowing a prospective client's connection packets to be routed backward through the NAT device(s) between the public internet and this host. + +This requires forward knowledge of a prospective client's address and communication port as seen by the public internet - after any NAT devices have handled their connection request. This information can be obtained by a `STUN `__ service, and must be handed off to your host by an entity that is not the prospective client. This will never work for a client behind a Symmetric NAT due to the nature of the Symmetric NAT routing algorithm, as their IP and Port cannot be known beforehand. + .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)` .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)` .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)` .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_enetmultiplayerpeer.rst b/classes/class_enetmultiplayerpeer.rst index d6078d8f8a10..15d016ede4b6 100644 --- a/classes/class_enetmultiplayerpeer.rst +++ b/classes/class_enetmultiplayerpeer.rst @@ -172,3 +172,4 @@ The IP used when creating a server. This is set to the wildcard ``"*"`` by defau .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_enetpacketpeer.rst b/classes/class_enetpacketpeer.rst index 250974a14418..78755e1f9cab 100644 --- a/classes/class_enetpacketpeer.rst +++ b/classes/class_enetpacketpeer.rst @@ -539,3 +539,4 @@ Intermediate values for the throttle represent intermediate probabilities betwee .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_engine.rst b/classes/class_engine.rst index ce6b666ea91c..6052a3b06d53 100644 --- a/classes/class_engine.rst +++ b/classes/class_engine.rst @@ -706,3 +706,4 @@ Unregisters the singleton registered under ``name``. The singleton object is not .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_enginedebugger.rst b/classes/class_enginedebugger.rst index 04d10c3afe1b..f0c828bbde04 100644 --- a/classes/class_enginedebugger.rst +++ b/classes/class_enginedebugger.rst @@ -198,3 +198,4 @@ Unregisters a profiler with given ``name``. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_engineprofiler.rst b/classes/class_engineprofiler.rst index e78193d3d9b6..41832afc135f 100644 --- a/classes/class_engineprofiler.rst +++ b/classes/class_engineprofiler.rst @@ -86,3 +86,4 @@ Called when the profiler is enabled/disabled, along with a set of ``options``. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_environment.rst b/classes/class_environment.rst index a64b0b09c1a1..2eceb95b333e 100644 --- a/classes/class_environment.rst +++ b/classes/class_environment.rst @@ -2215,3 +2215,4 @@ Sets the intensity of the glow level ``idx``. A value above ``0.0`` enables the .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_expression.rst b/classes/class_expression.rst index a6f282605d21..1345418df1a5 100644 --- a/classes/class_expression.rst +++ b/classes/class_expression.rst @@ -158,3 +158,4 @@ You can optionally specify names of variables that may appear in the expression .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_fastnoiselite.rst b/classes/class_fastnoiselite.rst index d6855d0bb387..90416f42aa7a 100644 --- a/classes/class_fastnoiselite.rst +++ b/classes/class_fastnoiselite.rst @@ -730,3 +730,4 @@ The random number seed for all noise types. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_fileaccess.rst b/classes/class_fileaccess.rst index 4cf9c3c4e264..ad721e3418f1 100644 --- a/classes/class_fileaccess.rst +++ b/classes/class_fileaccess.rst @@ -1023,3 +1023,4 @@ Internally, this uses the same encoding mechanism as the :ref:`@GlobalScope.var_ .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_filedialog.rst b/classes/class_filedialog.rst index 1b0dd2ecdc03..3c4427bc4f1e 100644 --- a/classes/class_filedialog.rst +++ b/classes/class_filedialog.rst @@ -611,3 +611,4 @@ Custom icon for the toggle hidden button. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_filesystemdock.rst b/classes/class_filesystemdock.rst index b98c8de8a870..2f9f4f8d32a5 100644 --- a/classes/class_filesystemdock.rst +++ b/classes/class_filesystemdock.rst @@ -187,3 +187,4 @@ Removes an :ref:`EditorResourceTooltipPlugin` .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_float.rst b/classes/class_float.rst index b8bc8076a986..df14c36d0468 100644 --- a/classes/class_float.rst +++ b/classes/class_float.rst @@ -620,3 +620,4 @@ Returns the negative value of the **float**. If positive, turns the number negat .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_flowcontainer.rst b/classes/class_flowcontainer.rst index 862e9d7b5d58..f1102e108ed0 100644 --- a/classes/class_flowcontainer.rst +++ b/classes/class_flowcontainer.rst @@ -202,3 +202,4 @@ The vertical separation of children nodes. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_fogmaterial.rst b/classes/class_fogmaterial.rst index 7d3cd5544ada..cc31a781e830 100644 --- a/classes/class_fogmaterial.rst +++ b/classes/class_fogmaterial.rst @@ -160,3 +160,4 @@ The rate by which the height-based fog decreases in density as height increases .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_fogvolume.rst b/classes/class_fogvolume.rst index b6d202d94ec2..768fd3e637ed 100644 --- a/classes/class_fogvolume.rst +++ b/classes/class_fogvolume.rst @@ -107,3 +107,4 @@ The size of the **FogVolume** when :ref:`shape` .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_font.rst b/classes/class_font.rst index 7cf794d10e14..797ba1fa1d80 100644 --- a/classes/class_font.rst +++ b/classes/class_font.rst @@ -31,75 +31,75 @@ Methods .. table:: :widths: auto - +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`draw_char` **(** :ref:`RID` canvas_item, :ref:`Vector2` pos, :ref:`int` char, :ref:`int` font_size, :ref:`Color` modulate=Color(1, 1, 1, 1) **)** |const| | - +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`draw_char_outline` **(** :ref:`RID` canvas_item, :ref:`Vector2` pos, :ref:`int` char, :ref:`int` font_size, :ref:`int` size=-1, :ref:`Color` modulate=Color(1, 1, 1, 1) **)** |const| | - +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`draw_multiline_string` **(** :ref:`RID` canvas_item, :ref:`Vector2` pos, :ref:`String` text, :ref:`HorizontalAlignment` alignment=0, :ref:`float` width=-1, :ref:`int` font_size=16, :ref:`int` max_lines=-1, :ref:`Color` modulate=Color(1, 1, 1, 1), :ref:`LineBreakFlag` brk_flags=3, :ref:`JustificationFlag` justification_flags=3, :ref:`Direction` direction=0, :ref:`Orientation` orientation=0 **)** |const| | - +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`draw_multiline_string_outline` **(** :ref:`RID` canvas_item, :ref:`Vector2` pos, :ref:`String` text, :ref:`HorizontalAlignment` alignment=0, :ref:`float` width=-1, :ref:`int` font_size=16, :ref:`int` max_lines=-1, :ref:`int` size=1, :ref:`Color` modulate=Color(1, 1, 1, 1), :ref:`LineBreakFlag` brk_flags=3, :ref:`JustificationFlag` justification_flags=3, :ref:`Direction` direction=0, :ref:`Orientation` orientation=0 **)** |const| | - +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`draw_string` **(** :ref:`RID` canvas_item, :ref:`Vector2` pos, :ref:`String` text, :ref:`HorizontalAlignment` alignment=0, :ref:`float` width=-1, :ref:`int` font_size=16, :ref:`Color` modulate=Color(1, 1, 1, 1), :ref:`JustificationFlag` justification_flags=3, :ref:`Direction` direction=0, :ref:`Orientation` orientation=0 **)** |const| | - +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`draw_string_outline` **(** :ref:`RID` canvas_item, :ref:`Vector2` pos, :ref:`String` text, :ref:`HorizontalAlignment` alignment=0, :ref:`float` width=-1, :ref:`int` font_size=16, :ref:`int` size=1, :ref:`Color` modulate=Color(1, 1, 1, 1), :ref:`JustificationFlag` justification_flags=3, :ref:`Direction` direction=0, :ref:`Orientation` orientation=0 **)** |const| | - +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`find_variation` **(** :ref:`Dictionary` variation_coordinates, :ref:`int` face_index=0, :ref:`float` strength=0.0, :ref:`Transform2D` transform=Transform2D(1, 0, 0, 1, 0, 0) **)** |const| | - +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`get_ascent` **(** :ref:`int` font_size=16 **)** |const| | - +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`get_char_size` **(** :ref:`int` char, :ref:`int` font_size **)** |const| | - +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`get_descent` **(** :ref:`int` font_size=16 **)** |const| | - +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_face_count` **(** **)** |const| | - +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Font[]` | :ref:`get_fallbacks` **(** **)** |const| | - +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`get_font_name` **(** **)** |const| | - +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_font_stretch` **(** **)** |const| | - +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`FontStyle` | :ref:`get_font_style` **(** **)** |const| | - +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`get_font_style_name` **(** **)** |const| | - +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_font_weight` **(** **)** |const| | - +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`get_height` **(** :ref:`int` font_size=16 **)** |const| | - +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`get_multiline_string_size` **(** :ref:`String` text, :ref:`HorizontalAlignment` alignment=0, :ref:`float` width=-1, :ref:`int` font_size=16, :ref:`int` max_lines=-1, :ref:`LineBreakFlag` brk_flags=3, :ref:`JustificationFlag` justification_flags=3, :ref:`Direction` direction=0, :ref:`Orientation` orientation=0 **)** |const| | - +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Dictionary` | :ref:`get_opentype_features` **(** **)** |const| | - +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Dictionary` | :ref:`get_ot_name_strings` **(** **)** |const| | - +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID[]` | :ref:`get_rids` **(** **)** |const| | - +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_spacing` **(** :ref:`SpacingType` spacing **)** |const| | - +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`get_string_size` **(** :ref:`String` text, :ref:`HorizontalAlignment` alignment=0, :ref:`float` width=-1, :ref:`int` font_size=16, :ref:`JustificationFlag` justification_flags=3, :ref:`Direction` direction=0, :ref:`Orientation` orientation=0 **)** |const| | - +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`get_supported_chars` **(** **)** |const| | - +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Dictionary` | :ref:`get_supported_feature_list` **(** **)** |const| | - +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Dictionary` | :ref:`get_supported_variation_list` **(** **)** |const| | - +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`get_underline_position` **(** :ref:`int` font_size=16 **)** |const| | - +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`get_underline_thickness` **(** :ref:`int` font_size=16 **)** |const| | - +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`has_char` **(** :ref:`int` char **)** |const| | - +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_language_supported` **(** :ref:`String` language **)** |const| | - +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_script_supported` **(** :ref:`String` script **)** |const| | - +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`set_cache_capacity` **(** :ref:`int` single_line, :ref:`int` multi_line **)** | - +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`set_fallbacks` **(** :ref:`Font[]` fallbacks **)** | - +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`draw_char` **(** :ref:`RID` canvas_item, :ref:`Vector2` pos, :ref:`int` char, :ref:`int` font_size, :ref:`Color` modulate=Color(1, 1, 1, 1) **)** |const| | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`draw_char_outline` **(** :ref:`RID` canvas_item, :ref:`Vector2` pos, :ref:`int` char, :ref:`int` font_size, :ref:`int` size=-1, :ref:`Color` modulate=Color(1, 1, 1, 1) **)** |const| | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`draw_multiline_string` **(** :ref:`RID` canvas_item, :ref:`Vector2` pos, :ref:`String` text, :ref:`HorizontalAlignment` alignment=0, :ref:`float` width=-1, :ref:`int` font_size=16, :ref:`int` max_lines=-1, :ref:`Color` modulate=Color(1, 1, 1, 1), |bitfield|\<:ref:`LineBreakFlag`\> brk_flags=3, |bitfield|\<:ref:`JustificationFlag`\> justification_flags=3, :ref:`Direction` direction=0, :ref:`Orientation` orientation=0 **)** |const| | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`draw_multiline_string_outline` **(** :ref:`RID` canvas_item, :ref:`Vector2` pos, :ref:`String` text, :ref:`HorizontalAlignment` alignment=0, :ref:`float` width=-1, :ref:`int` font_size=16, :ref:`int` max_lines=-1, :ref:`int` size=1, :ref:`Color` modulate=Color(1, 1, 1, 1), |bitfield|\<:ref:`LineBreakFlag`\> brk_flags=3, |bitfield|\<:ref:`JustificationFlag`\> justification_flags=3, :ref:`Direction` direction=0, :ref:`Orientation` orientation=0 **)** |const| | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`draw_string` **(** :ref:`RID` canvas_item, :ref:`Vector2` pos, :ref:`String` text, :ref:`HorizontalAlignment` alignment=0, :ref:`float` width=-1, :ref:`int` font_size=16, :ref:`Color` modulate=Color(1, 1, 1, 1), |bitfield|\<:ref:`JustificationFlag`\> justification_flags=3, :ref:`Direction` direction=0, :ref:`Orientation` orientation=0 **)** |const| | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`draw_string_outline` **(** :ref:`RID` canvas_item, :ref:`Vector2` pos, :ref:`String` text, :ref:`HorizontalAlignment` alignment=0, :ref:`float` width=-1, :ref:`int` font_size=16, :ref:`int` size=1, :ref:`Color` modulate=Color(1, 1, 1, 1), |bitfield|\<:ref:`JustificationFlag`\> justification_flags=3, :ref:`Direction` direction=0, :ref:`Orientation` orientation=0 **)** |const| | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`find_variation` **(** :ref:`Dictionary` variation_coordinates, :ref:`int` face_index=0, :ref:`float` strength=0.0, :ref:`Transform2D` transform=Transform2D(1, 0, 0, 1, 0, 0) **)** |const| | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`get_ascent` **(** :ref:`int` font_size=16 **)** |const| | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`get_char_size` **(** :ref:`int` char, :ref:`int` font_size **)** |const| | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`get_descent` **(** :ref:`int` font_size=16 **)** |const| | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_face_count` **(** **)** |const| | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Font[]` | :ref:`get_fallbacks` **(** **)** |const| | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`get_font_name` **(** **)** |const| | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_font_stretch` **(** **)** |const| | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |bitfield|\<:ref:`FontStyle`\> | :ref:`get_font_style` **(** **)** |const| | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`get_font_style_name` **(** **)** |const| | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_font_weight` **(** **)** |const| | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`get_height` **(** :ref:`int` font_size=16 **)** |const| | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`get_multiline_string_size` **(** :ref:`String` text, :ref:`HorizontalAlignment` alignment=0, :ref:`float` width=-1, :ref:`int` font_size=16, :ref:`int` max_lines=-1, |bitfield|\<:ref:`LineBreakFlag`\> brk_flags=3, |bitfield|\<:ref:`JustificationFlag`\> justification_flags=3, :ref:`Direction` direction=0, :ref:`Orientation` orientation=0 **)** |const| | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`get_opentype_features` **(** **)** |const| | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`get_ot_name_strings` **(** **)** |const| | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID[]` | :ref:`get_rids` **(** **)** |const| | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_spacing` **(** :ref:`SpacingType` spacing **)** |const| | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`get_string_size` **(** :ref:`String` text, :ref:`HorizontalAlignment` alignment=0, :ref:`float` width=-1, :ref:`int` font_size=16, |bitfield|\<:ref:`JustificationFlag`\> justification_flags=3, :ref:`Direction` direction=0, :ref:`Orientation` orientation=0 **)** |const| | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`get_supported_chars` **(** **)** |const| | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`get_supported_feature_list` **(** **)** |const| | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`get_supported_variation_list` **(** **)** |const| | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`get_underline_position` **(** :ref:`int` font_size=16 **)** |const| | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`get_underline_thickness` **(** :ref:`int` font_size=16 **)** |const| | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`has_char` **(** :ref:`int` char **)** |const| | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_language_supported` **(** :ref:`String` language **)** |const| | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_script_supported` **(** :ref:`String` script **)** |const| | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`set_cache_capacity` **(** :ref:`int` single_line, :ref:`int` multi_line **)** | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`set_fallbacks` **(** :ref:`Font[]` fallbacks **)** | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator @@ -142,7 +142,7 @@ Draw a single Unicode character ``char`` outline into a canvas item using the fo .. rst-class:: classref-method -void **draw_multiline_string** **(** :ref:`RID` canvas_item, :ref:`Vector2` pos, :ref:`String` text, :ref:`HorizontalAlignment` alignment=0, :ref:`float` width=-1, :ref:`int` font_size=16, :ref:`int` max_lines=-1, :ref:`Color` modulate=Color(1, 1, 1, 1), :ref:`LineBreakFlag` brk_flags=3, :ref:`JustificationFlag` justification_flags=3, :ref:`Direction` direction=0, :ref:`Orientation` orientation=0 **)** |const| +void **draw_multiline_string** **(** :ref:`RID` canvas_item, :ref:`Vector2` pos, :ref:`String` text, :ref:`HorizontalAlignment` alignment=0, :ref:`float` width=-1, :ref:`int` font_size=16, :ref:`int` max_lines=-1, :ref:`Color` modulate=Color(1, 1, 1, 1), |bitfield|\<:ref:`LineBreakFlag`\> brk_flags=3, |bitfield|\<:ref:`JustificationFlag`\> justification_flags=3, :ref:`Direction` direction=0, :ref:`Orientation` orientation=0 **)** |const| Breaks ``text`` into lines using rules specified by ``brk_flags`` and draws it into a canvas item using the font, at a given position, with ``modulate`` color, optionally clipping the width and aligning horizontally. ``pos`` specifies the baseline of the first line, not the top. To draw from the top, *ascent* must be added to the Y axis. @@ -156,7 +156,7 @@ See also :ref:`CanvasItem.draw_multiline_string` canvas_item, :ref:`Vector2` pos, :ref:`String` text, :ref:`HorizontalAlignment` alignment=0, :ref:`float` width=-1, :ref:`int` font_size=16, :ref:`int` max_lines=-1, :ref:`int` size=1, :ref:`Color` modulate=Color(1, 1, 1, 1), :ref:`LineBreakFlag` brk_flags=3, :ref:`JustificationFlag` justification_flags=3, :ref:`Direction` direction=0, :ref:`Orientation` orientation=0 **)** |const| +void **draw_multiline_string_outline** **(** :ref:`RID` canvas_item, :ref:`Vector2` pos, :ref:`String` text, :ref:`HorizontalAlignment` alignment=0, :ref:`float` width=-1, :ref:`int` font_size=16, :ref:`int` max_lines=-1, :ref:`int` size=1, :ref:`Color` modulate=Color(1, 1, 1, 1), |bitfield|\<:ref:`LineBreakFlag`\> brk_flags=3, |bitfield|\<:ref:`JustificationFlag`\> justification_flags=3, :ref:`Direction` direction=0, :ref:`Orientation` orientation=0 **)** |const| Breaks ``text`` to the lines using rules specified by ``brk_flags`` and draws text outline into a canvas item using the font, at a given position, with ``modulate`` color and ``size`` outline size, optionally clipping the width and aligning horizontally. ``pos`` specifies the baseline of the first line, not the top. To draw from the top, *ascent* must be added to the Y axis. @@ -170,7 +170,7 @@ See also :ref:`CanvasItem.draw_multiline_string_outline` canvas_item, :ref:`Vector2` pos, :ref:`String` text, :ref:`HorizontalAlignment` alignment=0, :ref:`float` width=-1, :ref:`int` font_size=16, :ref:`Color` modulate=Color(1, 1, 1, 1), :ref:`JustificationFlag` justification_flags=3, :ref:`Direction` direction=0, :ref:`Orientation` orientation=0 **)** |const| +void **draw_string** **(** :ref:`RID` canvas_item, :ref:`Vector2` pos, :ref:`String` text, :ref:`HorizontalAlignment` alignment=0, :ref:`float` width=-1, :ref:`int` font_size=16, :ref:`Color` modulate=Color(1, 1, 1, 1), |bitfield|\<:ref:`JustificationFlag`\> justification_flags=3, :ref:`Direction` direction=0, :ref:`Orientation` orientation=0 **)** |const| Draw ``text`` into a canvas item using the font, at a given position, with ``modulate`` color, optionally clipping the width and aligning horizontally. ``pos`` specifies the baseline, not the top. To draw from the top, *ascent* must be added to the Y axis. @@ -184,7 +184,7 @@ See also :ref:`CanvasItem.draw_string`. .. rst-class:: classref-method -void **draw_string_outline** **(** :ref:`RID` canvas_item, :ref:`Vector2` pos, :ref:`String` text, :ref:`HorizontalAlignment` alignment=0, :ref:`float` width=-1, :ref:`int` font_size=16, :ref:`int` size=1, :ref:`Color` modulate=Color(1, 1, 1, 1), :ref:`JustificationFlag` justification_flags=3, :ref:`Direction` direction=0, :ref:`Orientation` orientation=0 **)** |const| +void **draw_string_outline** **(** :ref:`RID` canvas_item, :ref:`Vector2` pos, :ref:`String` text, :ref:`HorizontalAlignment` alignment=0, :ref:`float` width=-1, :ref:`int` font_size=16, :ref:`int` size=1, :ref:`Color` modulate=Color(1, 1, 1, 1), |bitfield|\<:ref:`JustificationFlag`\> justification_flags=3, :ref:`Direction` direction=0, :ref:`Orientation` orientation=0 **)** |const| Draw ``text`` outline into a canvas item using the font, at a given position, with ``modulate`` color and ``size`` outline size, optionally clipping the width and aligning horizontally. ``pos`` specifies the baseline, not the top. To draw from the top, *ascent* must be added to the Y axis. @@ -300,7 +300,7 @@ Returns font stretch amount, compared to a normal width. A percentage value betw .. rst-class:: classref-method -:ref:`FontStyle` **get_font_style** **(** **)** |const| +|bitfield|\<:ref:`FontStyle`\> **get_font_style** **(** **)** |const| Returns font style flags, see :ref:`FontStyle`. @@ -350,7 +350,7 @@ Returns the total average font height (ascent plus descent) in pixels. .. rst-class:: classref-method -:ref:`Vector2` **get_multiline_string_size** **(** :ref:`String` text, :ref:`HorizontalAlignment` alignment=0, :ref:`float` width=-1, :ref:`int` font_size=16, :ref:`int` max_lines=-1, :ref:`LineBreakFlag` brk_flags=3, :ref:`JustificationFlag` justification_flags=3, :ref:`Direction` direction=0, :ref:`Orientation` orientation=0 **)** |const| +:ref:`Vector2` **get_multiline_string_size** **(** :ref:`String` text, :ref:`HorizontalAlignment` alignment=0, :ref:`float` width=-1, :ref:`int` font_size=16, :ref:`int` max_lines=-1, |bitfield|\<:ref:`LineBreakFlag`\> brk_flags=3, |bitfield|\<:ref:`JustificationFlag`\> justification_flags=3, :ref:`Direction` direction=0, :ref:`Orientation` orientation=0 **)** |const| Returns the size of a bounding box of a string broken into the lines, taking kerning and advance into account. @@ -412,7 +412,7 @@ Returns the spacing for the given ``type`` (see :ref:`SpacingType` **get_string_size** **(** :ref:`String` text, :ref:`HorizontalAlignment` alignment=0, :ref:`float` width=-1, :ref:`int` font_size=16, :ref:`JustificationFlag` justification_flags=3, :ref:`Direction` direction=0, :ref:`Orientation` orientation=0 **)** |const| +:ref:`Vector2` **get_string_size** **(** :ref:`String` text, :ref:`HorizontalAlignment` alignment=0, :ref:`float` width=-1, :ref:`int` font_size=16, |bitfield|\<:ref:`JustificationFlag`\> justification_flags=3, :ref:`Direction` direction=0, :ref:`Orientation` orientation=0 **)** |const| Returns the size of a bounding box of a single-line string, taking kerning, advance and subpixel positioning into account. See also :ref:`get_multiline_string_size` and :ref:`draw_string`. @@ -584,3 +584,4 @@ Sets array of fallback **Font**\ s. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_fontfile.rst b/classes/class_fontfile.rst index 902e05dd6e1d..a3b5fdd94f5c 100644 --- a/classes/class_fontfile.rst +++ b/classes/class_fontfile.rst @@ -79,7 +79,7 @@ Properties +-----------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-----------------------+ | :ref:`int` | :ref:`font_stretch` | ``100`` | +-----------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`FontStyle` | :ref:`font_style` | ``0`` | + | |bitfield|\<:ref:`FontStyle`\> | :ref:`font_style` | ``0`` | +-----------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-----------------------+ | :ref:`int` | :ref:`font_weight` | ``400`` | +-----------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-----------------------+ @@ -372,12 +372,12 @@ Font stretch amount, compared to a normal width. A percentage value between ``50 .. rst-class:: classref-property -:ref:`FontStyle` **font_style** = ``0`` +|bitfield|\<:ref:`FontStyle`\> **font_style** = ``0`` .. rst-class:: classref-property-setget -- void **set_font_style** **(** :ref:`FontStyle` value **)** -- :ref:`FontStyle` **get_font_style** **(** **)** +- void **set_font_style** **(** |bitfield|\<:ref:`FontStyle`\> value **)** +- |bitfield|\<:ref:`FontStyle`\> **get_font_style** **(** **)** Font style flags, see :ref:`FontStyle`. @@ -1355,3 +1355,4 @@ Sets variation coordinates for the specified font cache entry. See :ref:`Font.ge .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_fontvariation.rst b/classes/class_fontvariation.rst index 3d5ba494c41c..a6c8cbab1b15 100644 --- a/classes/class_fontvariation.rst +++ b/classes/class_fontvariation.rst @@ -320,3 +320,4 @@ Sets the spacing for ``type`` (see :ref:`SpacingType` creates a new instance of the script. :ref:`Object.set_script` extends an existing object, if that object's class matches one of the script's base classes. @@ -75,3 +75,4 @@ For example: .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_generic6dofjoint3d.rst b/classes/class_generic6dofjoint3d.rst index f00d0bbb4b8f..8d623aa460b4 100644 --- a/classes/class_generic6dofjoint3d.rst +++ b/classes/class_generic6dofjoint3d.rst @@ -2162,3 +2162,4 @@ void **set_param_z** **(** :ref:`Param` param, :r .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_geometry2d.rst b/classes/class_geometry2d.rst index 168c23f04814..c7c2604d68cd 100644 --- a/classes/class_geometry2d.rst +++ b/classes/class_geometry2d.rst @@ -536,3 +536,4 @@ Triangulates the polygon specified by the points in ``polygon``. Returns a :ref: .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_geometry3d.rst b/classes/class_geometry3d.rst index af0b8a0352a7..749414a98191 100644 --- a/classes/class_geometry3d.rst +++ b/classes/class_geometry3d.rst @@ -210,3 +210,4 @@ Tests if the segment (``from``, ``to``) intersects the triangle ``a``, ``b``, `` .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_geometryinstance3d.rst b/classes/class_geometryinstance3d.rst index 28f893fb6ddf..089fdfeeb46e 100644 --- a/classes/class_geometryinstance3d.rst +++ b/classes/class_geometryinstance3d.rst @@ -567,3 +567,4 @@ Set the value of a shader uniform for this instance only (`per-instance uniform .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_gltfaccessor.rst b/classes/class_gltfaccessor.rst index e106825a80e3..4bf79eebd9c6 100644 --- a/classes/class_gltfaccessor.rst +++ b/classes/class_gltfaccessor.rst @@ -331,3 +331,4 @@ Property Descriptions .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_gltfanimation.rst b/classes/class_gltfanimation.rst index 310cc12a2bab..cf88430f2a42 100644 --- a/classes/class_gltfanimation.rst +++ b/classes/class_gltfanimation.rst @@ -58,3 +58,4 @@ Property Descriptions .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_gltfbufferview.rst b/classes/class_gltfbufferview.rst index 6c01c9d460f4..054fd1f9da04 100644 --- a/classes/class_gltfbufferview.rst +++ b/classes/class_gltfbufferview.rst @@ -142,3 +142,4 @@ Property Descriptions .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_gltfcamera.rst b/classes/class_gltfcamera.rst index ff7f292f72bc..dfd15f1ca9a8 100644 --- a/classes/class_gltfcamera.rst +++ b/classes/class_gltfcamera.rst @@ -217,3 +217,4 @@ Converts this GLTFCamera instance into a Godot :ref:`Camera3D` n .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_gltfdocument.rst b/classes/class_gltfdocument.rst index a4c9b3d86dec..68aff7c049a5 100644 --- a/classes/class_gltfdocument.rst +++ b/classes/class_gltfdocument.rst @@ -160,3 +160,4 @@ Takes a :ref:`GLTFState` object through the ``state`` parameter .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_gltfdocumentextension.rst b/classes/class_gltfdocumentextension.rst index d5d8b87fdbbb..3f3e4792878f 100644 --- a/classes/class_gltfdocumentextension.rst +++ b/classes/class_gltfdocumentextension.rst @@ -256,3 +256,4 @@ Runs when parsing the texture JSON from the GLTF textures array. This can be use .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_gltfdocumentextensionconvertimportermesh.rst b/classes/class_gltfdocumentextensionconvertimportermesh.rst index b47918b6fd30..2af7845a342b 100644 --- a/classes/class_gltfdocumentextensionconvertimportermesh.rst +++ b/classes/class_gltfdocumentextensionconvertimportermesh.rst @@ -22,3 +22,4 @@ GLTFDocumentExtensionConvertImporterMesh .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_gltflight.rst b/classes/class_gltflight.rst index ce8e36d71bf7..20805938cb09 100644 --- a/classes/class_gltflight.rst +++ b/classes/class_gltflight.rst @@ -238,3 +238,4 @@ Converts this GLTFLight instance into a Godot :ref:`Light3D` node .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_gltfmesh.rst b/classes/class_gltfmesh.rst index a27a730ebce8..1aa58a6267ad 100644 --- a/classes/class_gltfmesh.rst +++ b/classes/class_gltfmesh.rst @@ -100,3 +100,4 @@ Property Descriptions .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_gltfnode.rst b/classes/class_gltfnode.rst index 342468c52334..2a6dde37f507 100644 --- a/classes/class_gltfnode.rst +++ b/classes/class_gltfnode.rst @@ -326,3 +326,4 @@ The first argument should be the :ref:`GLTFDocumentExtension` **<** :ref:`RefCounted` **<** :ref:`Object` -Represents a GLTF collider. +Represents a GLTF physics shape. .. rst-class:: classref-introduction-group Description ----------- -Represents a collider as defined by the ``OMI_collider`` GLTF extension. This class is an intermediary between the GLTF data and Godot's nodes, and it's abstracted in a way that allows adding support for different GLTF physics extensions in the future. +Represents a physics shape as defined by the ``OMI_collider`` GLTF extension. This class is an intermediary between the GLTF data and Godot's nodes, and it's abstracted in a way that allows adding support for different GLTF physics extensions in the future. .. rst-class:: classref-introduction-group @@ -36,21 +36,21 @@ Properties .. table:: :widths: auto - +-----------------------------------------+-----------------------------------------------------------------+----------------------+ - | :ref:`float` | :ref:`height` | ``2.0`` | - +-----------------------------------------+-----------------------------------------------------------------+----------------------+ - | :ref:`ImporterMesh` | :ref:`importer_mesh` | | - +-----------------------------------------+-----------------------------------------------------------------+----------------------+ - | :ref:`bool` | :ref:`is_trigger` | ``false`` | - +-----------------------------------------+-----------------------------------------------------------------+----------------------+ - | :ref:`int` | :ref:`mesh_index` | ``-1`` | - +-----------------------------------------+-----------------------------------------------------------------+----------------------+ - | :ref:`float` | :ref:`radius` | ``0.5`` | - +-----------------------------------------+-----------------------------------------------------------------+----------------------+ - | :ref:`String` | :ref:`shape_type` | ``""`` | - +-----------------------------------------+-----------------------------------------------------------------+----------------------+ - | :ref:`Vector3` | :ref:`size` | ``Vector3(1, 1, 1)`` | - +-----------------------------------------+-----------------------------------------------------------------+----------------------+ + +-----------------------------------------+---------------------------------------------------------------------+----------------------+ + | :ref:`float` | :ref:`height` | ``2.0`` | + +-----------------------------------------+---------------------------------------------------------------------+----------------------+ + | :ref:`ImporterMesh` | :ref:`importer_mesh` | | + +-----------------------------------------+---------------------------------------------------------------------+----------------------+ + | :ref:`bool` | :ref:`is_trigger` | ``false`` | + +-----------------------------------------+---------------------------------------------------------------------+----------------------+ + | :ref:`int` | :ref:`mesh_index` | ``-1`` | + +-----------------------------------------+---------------------------------------------------------------------+----------------------+ + | :ref:`float` | :ref:`radius` | ``0.5`` | + +-----------------------------------------+---------------------------------------------------------------------+----------------------+ + | :ref:`String` | :ref:`shape_type` | ``""`` | + +-----------------------------------------+---------------------------------------------------------------------+----------------------+ + | :ref:`Vector3` | :ref:`size` | ``Vector3(1, 1, 1)`` | + +-----------------------------------------+---------------------------------------------------------------------+----------------------+ .. rst-class:: classref-reftable-group @@ -60,15 +60,15 @@ Methods .. table:: :widths: auto - +-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`GLTFCollider` | :ref:`from_dictionary` **(** :ref:`Dictionary` dictionary **)** |static| | - +-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`GLTFCollider` | :ref:`from_node` **(** :ref:`CollisionShape3D` collider_node **)** |static| | - +-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Dictionary` | :ref:`to_dictionary` **(** **)** |const| | - +-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`CollisionShape3D` | :ref:`to_node` **(** :ref:`bool` cache_shapes=false **)** | - +-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+ + +-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`GLTFPhysicsShape` | :ref:`from_dictionary` **(** :ref:`Dictionary` dictionary **)** |static| | + +-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`GLTFPhysicsShape` | :ref:`from_node` **(** :ref:`CollisionShape3D` shape_node **)** |static| | + +-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`to_dictionary` **(** **)** |const| | + +-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`CollisionShape3D` | :ref:`to_node` **(** :ref:`bool` cache_shapes=false **)** | + +-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator @@ -79,7 +79,7 @@ Methods Property Descriptions --------------------- -.. _class_GLTFCollider_property_height: +.. _class_GLTFPhysicsShape_property_height: .. rst-class:: classref-property @@ -90,13 +90,13 @@ Property Descriptions - void **set_height** **(** :ref:`float` value **)** - :ref:`float` **get_height** **(** **)** -The height of the collider, in meters. This is only used when the collider type is "capsule" or "cylinder". This value should not be negative, and for "capsule" it should be at least twice the radius. +The height of the shape, in meters. This is only used when the shape type is "capsule" or "cylinder". This value should not be negative, and for "capsule" it should be at least twice the radius. .. rst-class:: classref-item-separator ---- -.. _class_GLTFCollider_property_importer_mesh: +.. _class_GLTFPhysicsShape_property_importer_mesh: .. rst-class:: classref-property @@ -107,13 +107,13 @@ The height of the collider, in meters. This is only used when the collider type - void **set_importer_mesh** **(** :ref:`ImporterMesh` value **)** - :ref:`ImporterMesh` **get_importer_mesh** **(** **)** -The :ref:`ImporterMesh` resource of the collider. This is only used when the collider type is "hull" (convex hull) or "trimesh" (concave trimesh). +The :ref:`ImporterMesh` resource of the shape. This is only used when the shape type is "hull" (convex hull) or "trimesh" (concave trimesh). .. rst-class:: classref-item-separator ---- -.. _class_GLTFCollider_property_is_trigger: +.. _class_GLTFPhysicsShape_property_is_trigger: .. rst-class:: classref-property @@ -124,15 +124,15 @@ The :ref:`ImporterMesh` resource of the collider. This is on - void **set_is_trigger** **(** :ref:`bool` value **)** - :ref:`bool` **get_is_trigger** **(** **)** -If ``true``, indicates that this collider is a trigger. For Godot, this means that the collider should be a child of an Area3D node. +If ``true``, indicates that this shape is a trigger. For Godot, this means that the shape should be a child of an Area3D node. -This is the only variable not used in the :ref:`to_node` method, it's intended to be used alongside when deciding where to add the generated node as a child. +This is the only variable not used in the :ref:`to_node` method, it's intended to be used alongside when deciding where to add the generated node as a child. .. rst-class:: classref-item-separator ---- -.. _class_GLTFCollider_property_mesh_index: +.. _class_GLTFPhysicsShape_property_mesh_index: .. rst-class:: classref-property @@ -143,13 +143,13 @@ This is the only variable not used in the :ref:`to_node` value **)** - :ref:`int` **get_mesh_index** **(** **)** -The index of the collider's mesh in the GLTF file. This is only used when the collider type is "hull" (convex hull) or "trimesh" (concave trimesh). +The index of the shape's mesh in the GLTF file. This is only used when the shape type is "hull" (convex hull) or "trimesh" (concave trimesh). .. rst-class:: classref-item-separator ---- -.. _class_GLTFCollider_property_radius: +.. _class_GLTFPhysicsShape_property_radius: .. rst-class:: classref-property @@ -160,13 +160,13 @@ The index of the collider's mesh in the GLTF file. This is only used when the co - void **set_radius** **(** :ref:`float` value **)** - :ref:`float` **get_radius** **(** **)** -The radius of the collider, in meters. This is only used when the collider type is "capsule", "cylinder", or "sphere". This value should not be negative. +The radius of the shape, in meters. This is only used when the shape type is "capsule", "cylinder", or "sphere". This value should not be negative. .. rst-class:: classref-item-separator ---- -.. _class_GLTFCollider_property_shape_type: +.. _class_GLTFPhysicsShape_property_shape_type: .. rst-class:: classref-property @@ -177,13 +177,13 @@ The radius of the collider, in meters. This is only used when the collider type - void **set_shape_type** **(** :ref:`String` value **)** - :ref:`String` **get_shape_type** **(** **)** -The type of shape this collider represents. Valid values are "box", "capsule", "cylinder", "sphere", "hull", and "trimesh". +The type of shape this shape represents. Valid values are "box", "capsule", "cylinder", "sphere", "hull", and "trimesh". .. rst-class:: classref-item-separator ---- -.. _class_GLTFCollider_property_size: +.. _class_GLTFPhysicsShape_property_size: .. rst-class:: classref-property @@ -194,7 +194,7 @@ The type of shape this collider represents. Valid values are "box", "capsule", " - void **set_size** **(** :ref:`Vector3` value **)** - :ref:`Vector3` **get_size** **(** **)** -The size of the collider, in meters. This is only used when the collider type is "box", and it represents the "diameter" of the box. This value should not be negative. +The size of the shape, in meters. This is only used when the shape type is "box", and it represents the "diameter" of the box. This value should not be negative. .. rst-class:: classref-section-separator @@ -205,49 +205,49 @@ The size of the collider, in meters. This is only used when the collider type is Method Descriptions ------------------- -.. _class_GLTFCollider_method_from_dictionary: +.. _class_GLTFPhysicsShape_method_from_dictionary: .. rst-class:: classref-method -:ref:`GLTFCollider` **from_dictionary** **(** :ref:`Dictionary` dictionary **)** |static| +:ref:`GLTFPhysicsShape` **from_dictionary** **(** :ref:`Dictionary` dictionary **)** |static| -Creates a new GLTFCollider instance by parsing the given :ref:`Dictionary`. +Creates a new GLTFPhysicsShape instance by parsing the given :ref:`Dictionary`. .. rst-class:: classref-item-separator ---- -.. _class_GLTFCollider_method_from_node: +.. _class_GLTFPhysicsShape_method_from_node: .. rst-class:: classref-method -:ref:`GLTFCollider` **from_node** **(** :ref:`CollisionShape3D` collider_node **)** |static| +:ref:`GLTFPhysicsShape` **from_node** **(** :ref:`CollisionShape3D` shape_node **)** |static| -Create a new GLTFCollider instance from the given Godot :ref:`CollisionShape3D` node. +Create a new GLTFPhysicsShape instance from the given Godot :ref:`CollisionShape3D` node. .. rst-class:: classref-item-separator ---- -.. _class_GLTFCollider_method_to_dictionary: +.. _class_GLTFPhysicsShape_method_to_dictionary: .. rst-class:: classref-method :ref:`Dictionary` **to_dictionary** **(** **)** |const| -Serializes this GLTFCollider instance into a :ref:`Dictionary`. +Serializes this GLTFPhysicsShape instance into a :ref:`Dictionary`. .. rst-class:: classref-item-separator ---- -.. _class_GLTFCollider_method_to_node: +.. _class_GLTFPhysicsShape_method_to_node: .. rst-class:: classref-method :ref:`CollisionShape3D` **to_node** **(** :ref:`bool` cache_shapes=false **)** -Converts this GLTFCollider instance into a Godot :ref:`CollisionShape3D` node. +Converts this GLTFPhysicsShape instance into a Godot :ref:`CollisionShape3D` node. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)` .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)` @@ -255,3 +255,4 @@ Converts this GLTFCollider instance into a Godot :ref:`CollisionShape3D` unique_names **)** .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_gltfskin.rst b/classes/class_gltfskin.rst index 940d8c8f4dbc..868b66c4b0fa 100644 --- a/classes/class_gltfskin.rst +++ b/classes/class_gltfskin.rst @@ -295,3 +295,4 @@ void **set_joint_i_to_name** **(** :ref:`Dictionary` joint_i_t .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_gltfspecgloss.rst b/classes/class_gltfspecgloss.rst index 7fed042b334e..9afdb215cb8c 100644 --- a/classes/class_gltfspecgloss.rst +++ b/classes/class_gltfspecgloss.rst @@ -144,3 +144,4 @@ The specular RGB color of the material. The alpha channel is unused. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_gltfstate.rst b/classes/class_gltfstate.rst index f190555ff6c9..649bd9493b60 100644 --- a/classes/class_gltfstate.rst +++ b/classes/class_gltfstate.rst @@ -880,3 +880,4 @@ Sets the unique node names in the state. This is used in both the import process .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_gltftexture.rst b/classes/class_gltftexture.rst index 87821a8d0b82..d33b2264fa54 100644 --- a/classes/class_gltftexture.rst +++ b/classes/class_gltftexture.rst @@ -75,3 +75,4 @@ The index of the image associated with this texture, see :ref:`GLTFState.get_ima .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_gltftexturesampler.rst b/classes/class_gltftexturesampler.rst index b3174fe07620..9eebd5254e9f 100644 --- a/classes/class_gltftexturesampler.rst +++ b/classes/class_gltftexturesampler.rst @@ -118,3 +118,4 @@ Wrapping mode to use for T-axis (vertical) texture coordinates. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_godotsharp.rst b/classes/class_godotsharp.rst index 97c11cb54538..a47a343df0e2 100644 --- a/classes/class_godotsharp.rst +++ b/classes/class_godotsharp.rst @@ -58,3 +58,4 @@ Returns ``true`` if the .NET runtime is initialized, ``false`` otherwise. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_gpuparticles2d.rst b/classes/class_gpuparticles2d.rst index b471a01ffce6..25c98fb01886 100644 --- a/classes/class_gpuparticles2d.rst +++ b/classes/class_gpuparticles2d.rst @@ -625,3 +625,4 @@ Restarts all the existing particles. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_gpuparticles3d.rst b/classes/class_gpuparticles3d.rst index 237610732c53..2c81809e8517 100644 --- a/classes/class_gpuparticles3d.rst +++ b/classes/class_gpuparticles3d.rst @@ -802,3 +802,4 @@ Sets the :ref:`Mesh` that is drawn at index ``pass``. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_gpuparticlesattractor3d.rst b/classes/class_gpuparticlesattractor3d.rst index b6e7014adc1b..ac82e9798d27 100644 --- a/classes/class_gpuparticlesattractor3d.rst +++ b/classes/class_gpuparticlesattractor3d.rst @@ -132,3 +132,4 @@ If :ref:`strength` is negative, .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_gpuparticlesattractorbox3d.rst b/classes/class_gpuparticlesattractorbox3d.rst index 6c03c94c8f0e..4529f82f8ae3 100644 --- a/classes/class_gpuparticlesattractorbox3d.rst +++ b/classes/class_gpuparticlesattractorbox3d.rst @@ -63,3 +63,4 @@ The attractor box's size in 3D units. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_gpuparticlesattractorsphere3d.rst b/classes/class_gpuparticlesattractorsphere3d.rst index 04eb7cfbdd9d..e9a8371e17da 100644 --- a/classes/class_gpuparticlesattractorsphere3d.rst +++ b/classes/class_gpuparticlesattractorsphere3d.rst @@ -65,3 +65,4 @@ The attractor sphere's radius in 3D units. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_gpuparticlesattractorvectorfield3d.rst b/classes/class_gpuparticlesattractorvectorfield3d.rst index 7a71672e674a..139881f005f8 100644 --- a/classes/class_gpuparticlesattractorvectorfield3d.rst +++ b/classes/class_gpuparticlesattractorvectorfield3d.rst @@ -86,3 +86,4 @@ The 3D texture to be used. Values are linearly interpolated between the texture' .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_gpuparticlescollision3d.rst b/classes/class_gpuparticlescollision3d.rst index feaf8a6c2169..557c015955c4 100644 --- a/classes/class_gpuparticlescollision3d.rst +++ b/classes/class_gpuparticlescollision3d.rst @@ -77,3 +77,4 @@ Particle attraction can also be disabled on a per-process material basis by sett .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_gpuparticlescollisionbox3d.rst b/classes/class_gpuparticlescollisionbox3d.rst index 7079a8ef3dc6..c0624ea0887a 100644 --- a/classes/class_gpuparticlescollisionbox3d.rst +++ b/classes/class_gpuparticlescollisionbox3d.rst @@ -65,3 +65,4 @@ The collision box's size in 3D units. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_gpuparticlescollisionheightfield3d.rst b/classes/class_gpuparticlescollisionheightfield3d.rst index 3bdc1b716176..8722f06c5410 100644 --- a/classes/class_gpuparticlescollisionheightfield3d.rst +++ b/classes/class_gpuparticlescollisionheightfield3d.rst @@ -225,3 +225,4 @@ The update policy to use for the generated heightmap. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_gpuparticlescollisionsdf3d.rst b/classes/class_gpuparticlescollisionsdf3d.rst index 4d008d7d3164..8f3ca73d2729 100644 --- a/classes/class_gpuparticlescollisionsdf3d.rst +++ b/classes/class_gpuparticlescollisionsdf3d.rst @@ -261,3 +261,4 @@ Based on ``value``, enables or disables the specified layer in the :ref:`bake_ma .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_gpuparticlescollisionsphere3d.rst b/classes/class_gpuparticlescollisionsphere3d.rst index 4c8c9423b410..b0a1a446152d 100644 --- a/classes/class_gpuparticlescollisionsphere3d.rst +++ b/classes/class_gpuparticlescollisionsphere3d.rst @@ -65,3 +65,4 @@ The collision sphere's radius in 3D units. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_gradient.rst b/classes/class_gradient.rst index 8fdeb2b646e7..4e53cc06eade 100644 --- a/classes/class_gradient.rst +++ b/classes/class_gradient.rst @@ -338,3 +338,4 @@ Sets the offset for the gradient color at index ``point``. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_gradienttexture1d.rst b/classes/class_gradienttexture1d.rst index 46202d9ffa0e..f8656b09aca5 100644 --- a/classes/class_gradienttexture1d.rst +++ b/classes/class_gradienttexture1d.rst @@ -101,3 +101,4 @@ The number of color samples that will be obtained from the :ref:`Gradient` used for each slot of the **GraphNode**. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_gridcontainer.rst b/classes/class_gridcontainer.rst index 09701b1b18df..5d914852a584 100644 --- a/classes/class_gridcontainer.rst +++ b/classes/class_gridcontainer.rst @@ -115,3 +115,4 @@ The vertical separation of children nodes. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_gridmap.rst b/classes/class_gridmap.rst index 39ef77b73dd9..36f63bc0cf4f 100644 --- a/classes/class_gridmap.rst +++ b/classes/class_gridmap.rst @@ -672,3 +672,4 @@ Sets the :ref:`RID` of the navigation map this GridMap node should us .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_groovejoint2d.rst b/classes/class_groovejoint2d.rst index 770d6c199ab6..141e85de6ee3 100644 --- a/classes/class_groovejoint2d.rst +++ b/classes/class_groovejoint2d.rst @@ -80,3 +80,4 @@ The groove's length. The groove is from the joint's origin towards :ref:`length< .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_hashingcontext.rst b/classes/class_hashingcontext.rst index 879d0ad07224..d20520a104a2 100644 --- a/classes/class_hashingcontext.rst +++ b/classes/class_hashingcontext.rst @@ -178,3 +178,4 @@ Updates the computation with the given ``chunk`` of data. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_hboxcontainer.rst b/classes/class_hboxcontainer.rst index d304213d540e..d6c59622bcd6 100644 --- a/classes/class_hboxcontainer.rst +++ b/classes/class_hboxcontainer.rst @@ -65,3 +65,4 @@ The horizontal space between the **HBoxContainer**'s elements. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_heightmapshape3d.rst b/classes/class_heightmapshape3d.rst index 8603b283b1f2..1f9c62962214 100644 --- a/classes/class_heightmapshape3d.rst +++ b/classes/class_heightmapshape3d.rst @@ -101,3 +101,4 @@ Number of vertices in the width of the height map. Changing this will resize the .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_hflowcontainer.rst b/classes/class_hflowcontainer.rst index 00ab895c3550..fbcadf8cd43a 100644 --- a/classes/class_hflowcontainer.rst +++ b/classes/class_hflowcontainer.rst @@ -77,3 +77,4 @@ The vertical separation of children nodes. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_hingejoint3d.rst b/classes/class_hingejoint3d.rst index 47e56490aff6..a98df7aa472d 100644 --- a/classes/class_hingejoint3d.rst +++ b/classes/class_hingejoint3d.rst @@ -426,3 +426,4 @@ Sets the value of the specified parameter. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_hmaccontext.rst b/classes/class_hmaccontext.rst index 045fa308d6cf..484a5e575402 100644 --- a/classes/class_hmaccontext.rst +++ b/classes/class_hmaccontext.rst @@ -133,3 +133,4 @@ Updates the message to be HMACed. This can be called multiple times before :ref: .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_hscrollbar.rst b/classes/class_hscrollbar.rst index 6017dd3c86c0..3c07f4240601 100644 --- a/classes/class_hscrollbar.rst +++ b/classes/class_hscrollbar.rst @@ -196,3 +196,4 @@ Used as background when the :ref:`ScrollBar` has the GUI focus. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_hseparator.rst b/classes/class_hseparator.rst index 150e0f99fb73..e578d6f92481 100644 --- a/classes/class_hseparator.rst +++ b/classes/class_hseparator.rst @@ -70,3 +70,4 @@ The style for the separator line. Works best with :ref:`StyleBoxLine` to be used when connecting to an HT .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_image.rst b/classes/class_image.rst index d5423560979d..fdf08ff56a2b 100644 --- a/classes/class_image.rst +++ b/classes/class_image.rst @@ -1722,3 +1722,4 @@ Converts the raw data from the sRGB colorspace to a linear scale. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_imageformatloader.rst b/classes/class_imageformatloader.rst index fc667f79730b..19a9142f9c67 100644 --- a/classes/class_imageformatloader.rst +++ b/classes/class_imageformatloader.rst @@ -68,3 +68,4 @@ flags **LoaderFlags**: .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_imageformatloaderextension.rst b/classes/class_imageformatloaderextension.rst index 102695244aa0..f56d522fb895 100644 --- a/classes/class_imageformatloaderextension.rst +++ b/classes/class_imageformatloaderextension.rst @@ -31,15 +31,15 @@ Methods .. table:: :widths: auto - +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedStringArray` | :ref:`_get_recognized_extensions` **(** **)** |virtual| |const| | - +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Error` | :ref:`_load_image` **(** :ref:`Image` image, :ref:`FileAccess` fileaccess, :ref:`LoaderFlags` flags, :ref:`float` scale **)** |virtual| | - +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`add_format_loader` **(** **)** | - +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`remove_format_loader` **(** **)** | - +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedStringArray` | :ref:`_get_recognized_extensions` **(** **)** |virtual| |const| | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Error` | :ref:`_load_image` **(** :ref:`Image` image, :ref:`FileAccess` fileaccess, |bitfield|\<:ref:`LoaderFlags`\> flags, :ref:`float` scale **)** |virtual| | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`add_format_loader` **(** **)** | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`remove_format_loader` **(** **)** | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator @@ -66,7 +66,7 @@ Returns the list of file extensions for this image format. Files with the given .. rst-class:: classref-method -:ref:`Error` **_load_image** **(** :ref:`Image` image, :ref:`FileAccess` fileaccess, :ref:`LoaderFlags` flags, :ref:`float` scale **)** |virtual| +:ref:`Error` **_load_image** **(** :ref:`Image` image, :ref:`FileAccess` fileaccess, |bitfield|\<:ref:`LoaderFlags`\> flags, :ref:`float` scale **)** |virtual| Loads the content of ``fileaccess`` into the provided ``image``. @@ -100,3 +100,4 @@ Remove this format loader from the engine. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_imagetexture.rst b/classes/class_imagetexture.rst index 98a191b19d45..ba21eb26aaa5 100644 --- a/classes/class_imagetexture.rst +++ b/classes/class_imagetexture.rst @@ -165,3 +165,4 @@ Use this method over :ref:`set_image` if yo .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_imagetexture3d.rst b/classes/class_imagetexture3d.rst index 937cbf4666e0..9a7f9873c050 100644 --- a/classes/class_imagetexture3d.rst +++ b/classes/class_imagetexture3d.rst @@ -72,3 +72,4 @@ Replaces the texture's existing data with the layers specified in ``data``. The .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_imagetexturelayered.rst b/classes/class_imagetexturelayered.rst index 5c8d47918e7d..7de2a95def23 100644 --- a/classes/class_imagetexturelayered.rst +++ b/classes/class_imagetexturelayered.rst @@ -80,3 +80,4 @@ The update is immediate: it's synchronized with drawing. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_immediatemesh.rst b/classes/class_immediatemesh.rst index 472fb0ac0b12..2ab241c87dc7 100644 --- a/classes/class_immediatemesh.rst +++ b/classes/class_immediatemesh.rst @@ -207,3 +207,4 @@ Set the UV2 attribute that will be pushed with the next vertex. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_importermesh.rst b/classes/class_importermesh.rst index 5f26f2bc751e..637190c926a8 100644 --- a/classes/class_importermesh.rst +++ b/classes/class_importermesh.rst @@ -419,3 +419,4 @@ Sets a name for a given surface. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_importermeshinstance3d.rst b/classes/class_importermeshinstance3d.rst index 967ca3810cc5..805b639bf696 100644 --- a/classes/class_importermeshinstance3d.rst +++ b/classes/class_importermeshinstance3d.rst @@ -100,3 +100,4 @@ Property Descriptions .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_input.rst b/classes/class_input.rst index e7adb7b5733c..0944eaeeb0ff 100644 --- a/classes/class_input.rst +++ b/classes/class_input.rst @@ -56,93 +56,93 @@ Methods .. table:: :widths: auto - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`action_press` **(** :ref:`StringName` action, :ref:`float` strength=1.0 **)** | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`action_release` **(** :ref:`StringName` action **)** | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`add_joy_mapping` **(** :ref:`String` mapping, :ref:`bool` update_existing=false **)** | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`flush_buffered_events` **(** **)** | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector3` | :ref:`get_accelerometer` **(** **)** |const| | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`get_action_raw_strength` **(** :ref:`StringName` action, :ref:`bool` exact_match=false **)** |const| | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`get_action_strength` **(** :ref:`StringName` action, :ref:`bool` exact_match=false **)** |const| | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`get_axis` **(** :ref:`StringName` negative_action, :ref:`StringName` positive_action **)** |const| | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int[]` | :ref:`get_connected_joypads` **(** **)** | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`CursorShape` | :ref:`get_current_cursor_shape` **(** **)** |const| | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector3` | :ref:`get_gravity` **(** **)** |const| | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector3` | :ref:`get_gyroscope` **(** **)** |const| | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`get_joy_axis` **(** :ref:`int` device, :ref:`JoyAxis` axis **)** |const| | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`get_joy_guid` **(** :ref:`int` device **)** |const| | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`get_joy_name` **(** :ref:`int` device **)** | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`get_joy_vibration_duration` **(** :ref:`int` device **)** | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`get_joy_vibration_strength` **(** :ref:`int` device **)** | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`get_last_mouse_velocity` **(** **)** | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector3` | :ref:`get_magnetometer` **(** **)** |const| | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`MouseButtonMask` | :ref:`get_mouse_button_mask` **(** **)** |const| | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`get_vector` **(** :ref:`StringName` negative_x, :ref:`StringName` positive_x, :ref:`StringName` negative_y, :ref:`StringName` positive_y, :ref:`float` deadzone=-1.0 **)** |const| | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_action_just_pressed` **(** :ref:`StringName` action, :ref:`bool` exact_match=false **)** |const| | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_action_just_released` **(** :ref:`StringName` action, :ref:`bool` exact_match=false **)** |const| | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_action_pressed` **(** :ref:`StringName` action, :ref:`bool` exact_match=false **)** |const| | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_anything_pressed` **(** **)** |const| | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_joy_button_pressed` **(** :ref:`int` device, :ref:`JoyButton` button **)** |const| | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_joy_known` **(** :ref:`int` device **)** | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_key_label_pressed` **(** :ref:`Key` keycode **)** |const| | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_key_pressed` **(** :ref:`Key` keycode **)** |const| | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_mouse_button_pressed` **(** :ref:`MouseButton` button **)** |const| | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_physical_key_pressed` **(** :ref:`Key` keycode **)** |const| | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`parse_input_event` **(** :ref:`InputEvent` event **)** | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`remove_joy_mapping` **(** :ref:`String` guid **)** | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`set_accelerometer` **(** :ref:`Vector3` value **)** | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`set_custom_mouse_cursor` **(** :ref:`Resource` image, :ref:`CursorShape` shape=0, :ref:`Vector2` hotspot=Vector2(0, 0) **)** | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`set_default_cursor_shape` **(** :ref:`CursorShape` shape=0 **)** | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`set_gravity` **(** :ref:`Vector3` value **)** | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`set_gyroscope` **(** :ref:`Vector3` value **)** | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`set_magnetometer` **(** :ref:`Vector3` value **)** | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`start_joy_vibration` **(** :ref:`int` device, :ref:`float` weak_magnitude, :ref:`float` strong_magnitude, :ref:`float` duration=0 **)** | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`stop_joy_vibration` **(** :ref:`int` device **)** | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`vibrate_handheld` **(** :ref:`int` duration_ms=500 **)** | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`warp_mouse` **(** :ref:`Vector2` position **)** | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`action_press` **(** :ref:`StringName` action, :ref:`float` strength=1.0 **)** | + +-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`action_release` **(** :ref:`StringName` action **)** | + +-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`add_joy_mapping` **(** :ref:`String` mapping, :ref:`bool` update_existing=false **)** | + +-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`flush_buffered_events` **(** **)** | + +-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector3` | :ref:`get_accelerometer` **(** **)** |const| | + +-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`get_action_raw_strength` **(** :ref:`StringName` action, :ref:`bool` exact_match=false **)** |const| | + +-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`get_action_strength` **(** :ref:`StringName` action, :ref:`bool` exact_match=false **)** |const| | + +-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`get_axis` **(** :ref:`StringName` negative_action, :ref:`StringName` positive_action **)** |const| | + +-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int[]` | :ref:`get_connected_joypads` **(** **)** | + +-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`CursorShape` | :ref:`get_current_cursor_shape` **(** **)** |const| | + +-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector3` | :ref:`get_gravity` **(** **)** |const| | + +-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector3` | :ref:`get_gyroscope` **(** **)** |const| | + +-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`get_joy_axis` **(** :ref:`int` device, :ref:`JoyAxis` axis **)** |const| | + +-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`get_joy_guid` **(** :ref:`int` device **)** |const| | + +-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`get_joy_name` **(** :ref:`int` device **)** | + +-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`get_joy_vibration_duration` **(** :ref:`int` device **)** | + +-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`get_joy_vibration_strength` **(** :ref:`int` device **)** | + +-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`get_last_mouse_velocity` **(** **)** | + +-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector3` | :ref:`get_magnetometer` **(** **)** |const| | + +-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |bitfield|\<:ref:`MouseButtonMask`\> | :ref:`get_mouse_button_mask` **(** **)** |const| | + +-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`get_vector` **(** :ref:`StringName` negative_x, :ref:`StringName` positive_x, :ref:`StringName` negative_y, :ref:`StringName` positive_y, :ref:`float` deadzone=-1.0 **)** |const| | + +-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_action_just_pressed` **(** :ref:`StringName` action, :ref:`bool` exact_match=false **)** |const| | + +-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_action_just_released` **(** :ref:`StringName` action, :ref:`bool` exact_match=false **)** |const| | + +-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_action_pressed` **(** :ref:`StringName` action, :ref:`bool` exact_match=false **)** |const| | + +-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_anything_pressed` **(** **)** |const| | + +-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_joy_button_pressed` **(** :ref:`int` device, :ref:`JoyButton` button **)** |const| | + +-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_joy_known` **(** :ref:`int` device **)** | + +-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_key_label_pressed` **(** :ref:`Key` keycode **)** |const| | + +-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_key_pressed` **(** :ref:`Key` keycode **)** |const| | + +-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_mouse_button_pressed` **(** :ref:`MouseButton` button **)** |const| | + +-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_physical_key_pressed` **(** :ref:`Key` keycode **)** |const| | + +-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`parse_input_event` **(** :ref:`InputEvent` event **)** | + +-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`remove_joy_mapping` **(** :ref:`String` guid **)** | + +-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`set_accelerometer` **(** :ref:`Vector3` value **)** | + +-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`set_custom_mouse_cursor` **(** :ref:`Resource` image, :ref:`CursorShape` shape=0, :ref:`Vector2` hotspot=Vector2(0, 0) **)** | + +-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`set_default_cursor_shape` **(** :ref:`CursorShape` shape=0 **)** | + +-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`set_gravity` **(** :ref:`Vector3` value **)** | + +-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`set_gyroscope` **(** :ref:`Vector3` value **)** | + +-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`set_magnetometer` **(** :ref:`Vector3` value **)** | + +-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`start_joy_vibration` **(** :ref:`int` device, :ref:`float` weak_magnitude, :ref:`float` strong_magnitude, :ref:`float` duration=0 **)** | + +-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`stop_joy_vibration` **(** :ref:`int` device **)** | + +-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`vibrate_handheld` **(** :ref:`int` duration_ms=500 **)** | + +-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`warp_mouse` **(** :ref:`Vector2` position **)** | + +-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator @@ -672,7 +672,7 @@ Returns the magnetic field strength in micro-Tesla for all axes of the device's .. rst-class:: classref-method -:ref:`MouseButtonMask` **get_mouse_button_mask** **(** **)** |const| +|bitfield|\<:ref:`MouseButtonMask`\> **get_mouse_button_mask** **(** **)** |const| Returns mouse buttons as a bitmask. If multiple mouse buttons are pressed at the same time, the bits are added together. Equivalent to :ref:`DisplayServer.mouse_get_button_state`. @@ -702,12 +702,14 @@ By default, the deadzone is automatically calculated from the average of the act :ref:`bool` **is_action_just_pressed** **(** :ref:`StringName` action, :ref:`bool` exact_match=false **)** |const| -Returns ``true`` when the user starts pressing the action event, meaning it's ``true`` only on the frame that the user pressed down the button. +Returns ``true`` when the user has *started* pressing the action event in the current frame or physics tick. It will only return ``true`` on the frame or tick that the user pressed down the button. This is useful for code that needs to run only once when an action is pressed, instead of every frame while it's pressed. If ``exact_match`` is ``false``, it ignores additional input modifiers for :ref:`InputEventKey` and :ref:`InputEventMouseButton` events, and the direction for :ref:`InputEventJoypadMotion` events. +\ **Note:** Returning ``true`` does not imply that the action is *still* pressed. An action can be pressed and released again rapidly, and ``true`` will still be returned so as not to miss input. + \ **Note:** Due to keyboard ghosting, :ref:`is_action_just_pressed` may return ``false`` even if one of the action's keys is pressed. See `Input examples <../tutorials/inputs/input_examples.html#keyboard-events>`__ in the documentation for more information. .. rst-class:: classref-item-separator @@ -720,7 +722,9 @@ If ``exact_match`` is ``false``, it ignores additional input modifiers for :ref: :ref:`bool` **is_action_just_released** **(** :ref:`StringName` action, :ref:`bool` exact_match=false **)** |const| -Returns ``true`` when the user stops pressing the action event, meaning it's ``true`` only on the frame that the user released the button. +Returns ``true`` when the user *stops* pressing the action event in the current frame or physics tick. It will only return ``true`` on the frame or tick that the user releases the button. + +\ **Note:** Returning ``true`` does not imply that the action is *still* not pressed. An action can be released and pressed again rapidly, and ``true`` will still be returned so as not to miss input. If ``exact_match`` is ``false``, it ignores additional input modifiers for :ref:`InputEventKey` and :ref:`InputEventMouseButton` events, and the direction for :ref:`InputEventJoypadMotion` events. @@ -1039,3 +1043,4 @@ Mouse position is clipped to the limits of the screen resolution, or to the limi .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_inputevent.rst b/classes/class_inputevent.rst index cf935daba160..a93c14f6a54e 100644 --- a/classes/class_inputevent.rst +++ b/classes/class_inputevent.rst @@ -291,3 +291,4 @@ Returns a copy of the given input event which has been offset by ``local_ofs`` a .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_inputeventaction.rst b/classes/class_inputeventaction.rst index c5bf81377eb8..647ab128a1e6 100644 --- a/classes/class_inputeventaction.rst +++ b/classes/class_inputeventaction.rst @@ -112,3 +112,4 @@ The action's strength between 0 and 1. This value is considered as equal to 0 if .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_inputeventfromwindow.rst b/classes/class_inputeventfromwindow.rst index a4d52d695bb3..063ee5c02605 100644 --- a/classes/class_inputeventfromwindow.rst +++ b/classes/class_inputeventfromwindow.rst @@ -63,3 +63,4 @@ The ID of a :ref:`Window` that received this event. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_inputeventgesture.rst b/classes/class_inputeventgesture.rst index 111e1f7fe2d5..dfc65d61c18c 100644 --- a/classes/class_inputeventgesture.rst +++ b/classes/class_inputeventgesture.rst @@ -70,3 +70,4 @@ The local gesture position relative to the :ref:`Viewport`. If u .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_inputeventjoypadbutton.rst b/classes/class_inputeventjoypadbutton.rst index ab5300b2e529..ba3001a3d162 100644 --- a/classes/class_inputeventjoypadbutton.rst +++ b/classes/class_inputeventjoypadbutton.rst @@ -106,3 +106,4 @@ Represents the pressure the user puts on the button with their finger, if the co .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_inputeventjoypadmotion.rst b/classes/class_inputeventjoypadmotion.rst index 6ef2c21a6fd7..c207962cfeec 100644 --- a/classes/class_inputeventjoypadmotion.rst +++ b/classes/class_inputeventjoypadmotion.rst @@ -87,3 +87,4 @@ Current position of the joystick on the given axis. The value ranges from ``-1.0 .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_inputeventkey.rst b/classes/class_inputeventkey.rst index e2b2c46dc7b6..4823f4615f84 100644 --- a/classes/class_inputeventkey.rst +++ b/classes/class_inputeventkey.rst @@ -294,3 +294,4 @@ To get a human-readable representation of the **InputEventKey** with modifiers, .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_inputeventmagnifygesture.rst b/classes/class_inputeventmagnifygesture.rst index 7f3f2659d4c0..fd1b82ec1015 100644 --- a/classes/class_inputeventmagnifygesture.rst +++ b/classes/class_inputeventmagnifygesture.rst @@ -68,3 +68,4 @@ The amount (or delta) of the event. This value is closer to ``1.0`` the slower t .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_inputeventmidi.rst b/classes/class_inputeventmidi.rst index 02c671c28ce3..901b52158697 100644 --- a/classes/class_inputeventmidi.rst +++ b/classes/class_inputeventmidi.rst @@ -276,3 +276,4 @@ The velocity of the MIDI signal. This value ranges from 0 to 127. For a piano, t .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_inputeventmouse.rst b/classes/class_inputeventmouse.rst index cfe1e28cc9e6..cb9152f196c0 100644 --- a/classes/class_inputeventmouse.rst +++ b/classes/class_inputeventmouse.rst @@ -38,13 +38,13 @@ Properties .. table:: :widths: auto - +-----------------------------------------------------------+------------------------------------------------------------------------+-------------------+ - | :ref:`MouseButtonMask` | :ref:`button_mask` | ``0`` | - +-----------------------------------------------------------+------------------------------------------------------------------------+-------------------+ - | :ref:`Vector2` | :ref:`global_position` | ``Vector2(0, 0)`` | - +-----------------------------------------------------------+------------------------------------------------------------------------+-------------------+ - | :ref:`Vector2` | :ref:`position` | ``Vector2(0, 0)`` | - +-----------------------------------------------------------+------------------------------------------------------------------------+-------------------+ + +-------------------------------------------------------------------------+------------------------------------------------------------------------+-------------------+ + | |bitfield|\<:ref:`MouseButtonMask`\> | :ref:`button_mask` | ``0`` | + +-------------------------------------------------------------------------+------------------------------------------------------------------------+-------------------+ + | :ref:`Vector2` | :ref:`global_position` | ``Vector2(0, 0)`` | + +-------------------------------------------------------------------------+------------------------------------------------------------------------+-------------------+ + | :ref:`Vector2` | :ref:`position` | ``Vector2(0, 0)`` | + +-------------------------------------------------------------------------+------------------------------------------------------------------------+-------------------+ .. rst-class:: classref-section-separator @@ -59,12 +59,12 @@ Property Descriptions .. rst-class:: classref-property -:ref:`MouseButtonMask` **button_mask** = ``0`` +|bitfield|\<:ref:`MouseButtonMask`\> **button_mask** = ``0`` .. rst-class:: classref-property-setget -- void **set_button_mask** **(** :ref:`MouseButtonMask` value **)** -- :ref:`MouseButtonMask` **get_button_mask** **(** **)** +- void **set_button_mask** **(** |bitfield|\<:ref:`MouseButtonMask`\> value **)** +- |bitfield|\<:ref:`MouseButtonMask`\> **get_button_mask** **(** **)** The mouse button mask identifier, one of or a bitwise combination of the :ref:`MouseButton` button masks. @@ -112,3 +112,4 @@ When received in :ref:`Control._gui_input`, ret .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_inputeventmousebutton.rst b/classes/class_inputeventmousebutton.rst index ddd0465e8af0..fa3f8c3b6a9f 100644 --- a/classes/class_inputeventmousebutton.rst +++ b/classes/class_inputeventmousebutton.rst @@ -146,3 +146,4 @@ If ``true``, the mouse button's state is pressed. If ``false``, the mouse button .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_inputeventmousemotion.rst b/classes/class_inputeventmousemotion.rst index fc84c79fd7a1..aba8239dbebe 100644 --- a/classes/class_inputeventmousemotion.rst +++ b/classes/class_inputeventmousemotion.rst @@ -154,3 +154,4 @@ The mouse velocity in pixels per second. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_inputeventpangesture.rst b/classes/class_inputeventpangesture.rst index 9c1ade7e2e26..450f9c155f68 100644 --- a/classes/class_inputeventpangesture.rst +++ b/classes/class_inputeventpangesture.rst @@ -68,3 +68,4 @@ Panning amount since last pan event. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_inputeventscreendrag.rst b/classes/class_inputeventscreendrag.rst index c1d47f63da1e..eed293817baa 100644 --- a/classes/class_inputeventscreendrag.rst +++ b/classes/class_inputeventscreendrag.rst @@ -182,3 +182,4 @@ The drag velocity. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_inputeventscreentouch.rst b/classes/class_inputeventscreentouch.rst index 1d5f6cd85461..c7e4ee170c5a 100644 --- a/classes/class_inputeventscreentouch.rst +++ b/classes/class_inputeventscreentouch.rst @@ -144,3 +144,4 @@ If ``true``, the touch's state is pressed. If ``false``, the touch's state is re .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_inputeventshortcut.rst b/classes/class_inputeventshortcut.rst index 12c6aaf760ab..845fdeddffc3 100644 --- a/classes/class_inputeventshortcut.rst +++ b/classes/class_inputeventshortcut.rst @@ -61,3 +61,4 @@ The :ref:`Shortcut` represented by this event. Its :ref:`Shortcu .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_inputeventwithmodifiers.rst b/classes/class_inputeventwithmodifiers.rst index 5b8eab0acec9..d01dcda82e65 100644 --- a/classes/class_inputeventwithmodifiers.rst +++ b/classes/class_inputeventwithmodifiers.rst @@ -58,11 +58,11 @@ Methods .. table:: :widths: auto - +-----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`KeyModifierMask` | :ref:`get_modifiers_mask` **(** **)** |const| | - +-----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_command_or_control_pressed` **(** **)** |const| | - +-----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+ + +-------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+ + | |bitfield|\<:ref:`KeyModifierMask`\> | :ref:`get_modifiers_mask` **(** **)** |const| | + +-------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_command_or_control_pressed` **(** **)** |const| | + +-------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator @@ -167,7 +167,7 @@ Method Descriptions .. rst-class:: classref-method -:ref:`KeyModifierMask` **get_modifiers_mask** **(** **)** |const| +|bitfield|\<:ref:`KeyModifierMask`\> **get_modifiers_mask** **(** **)** |const| Returns the keycode combination of modifier keys. @@ -191,3 +191,4 @@ On other platforms, returns ``true`` if :kbd:`Ctrl` is pressed. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_inputmap.rst b/classes/class_inputmap.rst index 2902bd71cc91..a07264124591 100644 --- a/classes/class_inputmap.rst +++ b/classes/class_inputmap.rst @@ -237,3 +237,4 @@ Clears all :ref:`InputEventAction` in the **InputMap** a .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_instanceplaceholder.rst b/classes/class_instanceplaceholder.rst index d4fcfb9f74be..d57409b6303f 100644 --- a/classes/class_instanceplaceholder.rst +++ b/classes/class_instanceplaceholder.rst @@ -90,3 +90,4 @@ If ``with_order`` is ``true``, a key named ``.order`` (note the leading period) .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_int.rst b/classes/class_int.rst index 3b3cf8ad25a5..481eae5575ee 100644 --- a/classes/class_int.rst +++ b/classes/class_int.rst @@ -771,3 +771,4 @@ Performs the bitwise ``NOT`` operation on the **int**. Due to `2's complement ` scope, :ref:`Object` | :ref:`horizontal_alignment` | ``0`` | +-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ - | :ref:`JustificationFlag` | :ref:`justification_flags` | ``163`` | + | |bitfield|\<:ref:`JustificationFlag`\> | :ref:`justification_flags` | ``163`` | +-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ | :ref:`LabelSettings` | :ref:`label_settings` | | +-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ @@ -55,7 +55,7 @@ Properties +-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ | :ref:`MouseFilter` | mouse_filter | ``2`` (overrides :ref:`Control`) | +-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ - | :ref:`SizeFlags` | size_flags_vertical | ``4`` (overrides :ref:`Control`) | + | |bitfield|\<:ref:`SizeFlags`\> | size_flags_vertical | ``4`` (overrides :ref:`Control`) | +-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ | :ref:`StructuredTextParser` | :ref:`structured_text_bidi_override` | ``0`` | +-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ @@ -194,12 +194,12 @@ Controls the text's horizontal alignment. Supports left, center, right, and fill .. rst-class:: classref-property -:ref:`JustificationFlag` **justification_flags** = ``163`` +|bitfield|\<:ref:`JustificationFlag`\> **justification_flags** = ``163`` .. rst-class:: classref-property-setget -- void **set_justification_flags** **(** :ref:`JustificationFlag` value **)** -- :ref:`JustificationFlag` **get_justification_flags** **(** **)** +- void **set_justification_flags** **(** |bitfield|\<:ref:`JustificationFlag`\> value **)** +- |bitfield|\<:ref:`JustificationFlag`\> **get_justification_flags** **(** **)** Line fill alignment rules. For more info see :ref:`JustificationFlag`. @@ -664,3 +664,4 @@ Background :ref:`StyleBox` for the **Label**. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_label3d.rst b/classes/class_label3d.rst index 9e3e0635a96f..cd299ff2dbcb 100644 --- a/classes/class_label3d.rst +++ b/classes/class_label3d.rst @@ -58,7 +58,7 @@ Properties +---------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------+ | :ref:`HorizontalAlignment` | :ref:`horizontal_alignment` | ``1`` | +---------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------+ - | :ref:`JustificationFlag` | :ref:`justification_flags` | ``163`` | + | |bitfield|\<:ref:`JustificationFlag`\> | :ref:`justification_flags` | ``163`` | +---------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`language` | ``""`` | +---------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------+ @@ -437,12 +437,12 @@ Controls the text's horizontal alignment. Supports left, center, right, and fill .. rst-class:: classref-property -:ref:`JustificationFlag` **justification_flags** = ``163`` +|bitfield|\<:ref:`JustificationFlag`\> **justification_flags** = ``163`` .. rst-class:: classref-property-setget -- void **set_justification_flags** **(** :ref:`JustificationFlag` value **)** -- :ref:`JustificationFlag` **get_justification_flags** **(** **)** +- void **set_justification_flags** **(** |bitfield|\<:ref:`JustificationFlag`\> value **)** +- |bitfield|\<:ref:`JustificationFlag`\> **get_justification_flags** **(** **)** Line fill alignment rules. For more info see :ref:`JustificationFlag`. @@ -824,3 +824,4 @@ If ``true``, the specified flag will be enabled. See :ref:`DrawFlags` parameter. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_lightmapgi.rst b/classes/class_lightmapgi.rst index e08688897c8c..8d5058f8b9a7 100644 --- a/classes/class_lightmapgi.rst +++ b/classes/class_lightmapgi.rst @@ -551,3 +551,4 @@ If ``true``, uses a CPU-based denoising algorithm on the generated lightmap. Thi .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_lightmapgidata.rst b/classes/class_lightmapgidata.rst index 4f8d595a4e79..dd0cfcfead5b 100644 --- a/classes/class_lightmapgidata.rst +++ b/classes/class_lightmapgidata.rst @@ -162,3 +162,4 @@ If ``uses_spherical_harmonics`` is ``true``, tells the engine to treat the light .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_lightmapper.rst b/classes/class_lightmapper.rst index 54824469ca21..f1546f2aa88d 100644 --- a/classes/class_lightmapper.rst +++ b/classes/class_lightmapper.rst @@ -31,3 +31,4 @@ Godot contains a built-in GPU-based lightmapper :ref:`LightmapperRD`) is .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_lightmapprobe.rst b/classes/class_lightmapprobe.rst index 3a6c0b9787de..f98dbad11872 100644 --- a/classes/class_lightmapprobe.rst +++ b/classes/class_lightmapprobe.rst @@ -29,3 +29,4 @@ Typically, :ref:`LightmapGI` probes are placed automatically b .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_lightoccluder2d.rst b/classes/class_lightoccluder2d.rst index f92bf9d83202..7f080f63bab9 100644 --- a/classes/class_lightoccluder2d.rst +++ b/classes/class_lightoccluder2d.rst @@ -108,3 +108,4 @@ The LightOccluder2D's occluder light mask. The LightOccluder2D will cast shadows .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_line2d.rst b/classes/class_line2d.rst index 482e6bcb11a9..14917c680a0b 100644 --- a/classes/class_line2d.rst +++ b/classes/class_line2d.rst @@ -510,3 +510,4 @@ Overwrites the position of the point at index ``index`` with the supplied ``posi .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_lineedit.rst b/classes/class_lineedit.rst index 77f59193054a..16ceebbb95a6 100644 --- a/classes/class_lineedit.rst +++ b/classes/class_lineedit.rst @@ -1616,3 +1616,4 @@ Background used when **LineEdit** is in read-only mode (:ref:`editable` for the menu item. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_menubutton.rst b/classes/class_menubutton.rst index 8d09a3f16871..6790e986e6ce 100644 --- a/classes/class_menubutton.rst +++ b/classes/class_menubutton.rst @@ -393,3 +393,4 @@ Default :ref:`StyleBox` for the **MenuButton**. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_mesh.rst b/classes/class_mesh.rst index f99358c3b040..58252817b5e7 100644 --- a/classes/class_mesh.rst +++ b/classes/class_mesh.rst @@ -968,3 +968,4 @@ Sets a :ref:`Material` for a given surface. Surface will be rend .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_meshconvexdecompositionsettings.rst b/classes/class_meshconvexdecompositionsettings.rst index e599c209dc36..c1c6ab045e32 100644 --- a/classes/class_meshconvexdecompositionsettings.rst +++ b/classes/class_meshconvexdecompositionsettings.rst @@ -320,3 +320,4 @@ Controls the bias toward clipping along symmetry planes. Ranges from ``0.0`` to .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_meshdatatool.rst b/classes/class_meshdatatool.rst index 6d2c6e27c9f3..273a9ea79367 100644 --- a/classes/class_meshdatatool.rst +++ b/classes/class_meshdatatool.rst @@ -635,3 +635,4 @@ Sets the bone weights of the given vertex. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_meshinstance2d.rst b/classes/class_meshinstance2d.rst index 09dc9521d00e..5cf3f8028fe7 100644 --- a/classes/class_meshinstance2d.rst +++ b/classes/class_meshinstance2d.rst @@ -104,3 +104,4 @@ The :ref:`Texture2D` that will be used if using the default :re .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_meshinstance3d.rst b/classes/class_meshinstance3d.rst index 58d503f1f887..f4f90efb3971 100644 --- a/classes/class_meshinstance3d.rst +++ b/classes/class_meshinstance3d.rst @@ -303,3 +303,4 @@ Sets the override ``material`` for the specified ``surface`` of the :ref:`Mesh` objects, each followed .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_meshtexture.rst b/classes/class_meshtexture.rst index 7d04f8474f5b..dbfe9014f28a 100644 --- a/classes/class_meshtexture.rst +++ b/classes/class_meshtexture.rst @@ -101,3 +101,4 @@ Sets the mesh used to draw. It must be a mesh using 2D vertices. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_methodtweener.rst b/classes/class_methodtweener.rst index 320c66da23ff..4c52a6871cc2 100644 --- a/classes/class_methodtweener.rst +++ b/classes/class_methodtweener.rst @@ -86,3 +86,4 @@ Sets the type of used transition from :ref:`TransitionType` for a specific instance. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_multimeshinstance2d.rst b/classes/class_multimeshinstance2d.rst index 9f2db4b86210..e30a8c4cce5e 100644 --- a/classes/class_multimeshinstance2d.rst +++ b/classes/class_multimeshinstance2d.rst @@ -99,3 +99,4 @@ The :ref:`Texture2D` that will be used if using the default :re .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_multimeshinstance3d.rst b/classes/class_multimeshinstance3d.rst index f5df33d8bd19..34e6844d2731 100644 --- a/classes/class_multimeshinstance3d.rst +++ b/classes/class_multimeshinstance3d.rst @@ -74,3 +74,4 @@ The :ref:`MultiMesh` resource that will be used and shared amon .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_multiplayerapi.rst b/classes/class_multiplayerapi.rst index 8c48b99eff4f..850a9eba07a5 100644 --- a/classes/class_multiplayerapi.rst +++ b/classes/class_multiplayerapi.rst @@ -366,3 +366,4 @@ Sets the default MultiplayerAPI implementation class. This method can be used by .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_multiplayerapiextension.rst b/classes/class_multiplayerapiextension.rst index 7bbe8165f0b2..b06a29e93e61 100644 --- a/classes/class_multiplayerapiextension.rst +++ b/classes/class_multiplayerapiextension.rst @@ -244,3 +244,4 @@ Called when the :ref:`MultiplayerAPI.multiplayer_peer` **VISIBILITY_PROCESS_IDLE** = ``0`` -Visibility filters are updated every idle process frame. +Visibility filters are updated during process frames (see :ref:`Node.NOTIFICATION_INTERNAL_PROCESS`). .. _class_MultiplayerSynchronizer_constant_VISIBILITY_PROCESS_PHYSICS: @@ -141,7 +141,7 @@ Visibility filters are updated every idle process frame. :ref:`VisibilityUpdateMode` **VISIBILITY_PROCESS_PHYSICS** = ``1`` -Visibility filters are updated every physics process frame. +Visibility filters are updated during physics frames (see :ref:`Node.NOTIFICATION_INTERNAL_PHYSICS_PROCESS`). .. _class_MultiplayerSynchronizer_constant_VISIBILITY_PROCESS_NONE: @@ -333,3 +333,4 @@ Updates the visibility of ``for_peer`` according to visibility filters. If ``for .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_mutex.rst b/classes/class_mutex.rst index b72ae9b2e8ca..0a1a29b32bf0 100644 --- a/classes/class_mutex.rst +++ b/classes/class_mutex.rst @@ -111,3 +111,4 @@ Unlocks this **Mutex**, leaving it to other threads. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_navigationagent2d.rst b/classes/class_navigationagent2d.rst index 07ea6c4f3a7f..04b4afe2df12 100644 --- a/classes/class_navigationagent2d.rst +++ b/classes/class_navigationagent2d.rst @@ -40,55 +40,55 @@ Properties .. table:: :widths: auto - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`bool` | :ref:`avoidance_enabled` | ``false`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`int` | :ref:`avoidance_layers` | ``1`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`int` | :ref:`avoidance_mask` | ``1`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`float` | :ref:`avoidance_priority` | ``1.0`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`bool` | :ref:`debug_enabled` | ``false`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`Color` | :ref:`debug_path_custom_color` | ``Color(1, 1, 1, 1)`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`float` | :ref:`debug_path_custom_line_width` | ``-1.0`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`float` | :ref:`debug_path_custom_point_size` | ``4.0`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`bool` | :ref:`debug_use_custom` | ``false`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`int` | :ref:`max_neighbors` | ``10`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`float` | :ref:`max_speed` | ``100.0`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`int` | :ref:`navigation_layers` | ``1`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`float` | :ref:`neighbor_distance` | ``500.0`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`float` | :ref:`path_desired_distance` | ``20.0`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`float` | :ref:`path_max_distance` | ``100.0`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`PathMetadataFlags` | :ref:`path_metadata_flags` | ``7`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`PathPostProcessing` | :ref:`path_postprocessing` | ``0`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`PathfindingAlgorithm` | :ref:`pathfinding_algorithm` | ``0`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`float` | :ref:`radius` | ``10.0`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`float` | :ref:`target_desired_distance` | ``10.0`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`Vector2` | :ref:`target_position` | ``Vector2(0, 0)`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`float` | :ref:`time_horizon_agents` | ``1.0`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`float` | :ref:`time_horizon_obstacles` | ``0.0`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`Vector2` | :ref:`velocity` | ``Vector2(0, 0)`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`bool` | :ref:`avoidance_enabled` | ``false`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`int` | :ref:`avoidance_layers` | ``1`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`int` | :ref:`avoidance_mask` | ``1`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`float` | :ref:`avoidance_priority` | ``1.0`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`bool` | :ref:`debug_enabled` | ``false`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`Color` | :ref:`debug_path_custom_color` | ``Color(1, 1, 1, 1)`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`float` | :ref:`debug_path_custom_line_width` | ``-1.0`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`float` | :ref:`debug_path_custom_point_size` | ``4.0`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`bool` | :ref:`debug_use_custom` | ``false`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`int` | :ref:`max_neighbors` | ``10`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`float` | :ref:`max_speed` | ``100.0`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`int` | :ref:`navigation_layers` | ``1`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`float` | :ref:`neighbor_distance` | ``500.0`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`float` | :ref:`path_desired_distance` | ``20.0`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`float` | :ref:`path_max_distance` | ``100.0`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | |bitfield|\<:ref:`PathMetadataFlags`\> | :ref:`path_metadata_flags` | ``7`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`PathPostProcessing` | :ref:`path_postprocessing` | ``0`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`PathfindingAlgorithm` | :ref:`pathfinding_algorithm` | ``0`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`float` | :ref:`radius` | ``10.0`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`float` | :ref:`target_desired_distance` | ``10.0`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`Vector2` | :ref:`target_position` | ``Vector2(0, 0)`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`float` | :ref:`time_horizon_agents` | ``1.0`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`float` | :ref:`time_horizon_obstacles` | ``0.0`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`Vector2` | :ref:`velocity` | ``Vector2(0, 0)`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ .. rst-class:: classref-reftable-group @@ -507,12 +507,12 @@ The maximum distance the agent is allowed away from the ideal path to the final .. rst-class:: classref-property -:ref:`PathMetadataFlags` **path_metadata_flags** = ``7`` +|bitfield|\<:ref:`PathMetadataFlags`\> **path_metadata_flags** = ``7`` .. rst-class:: classref-property-setget -- void **set_path_metadata_flags** **(** :ref:`PathMetadataFlags` value **)** -- :ref:`PathMetadataFlags` **get_path_metadata_flags** **(** **)** +- void **set_path_metadata_flags** **(** |bitfield|\<:ref:`PathMetadataFlags`\> value **)** +- |bitfield|\<:ref:`PathMetadataFlags`\> **get_path_metadata_flags** **(** **)** Additional information to return with the navigation path. @@ -893,3 +893,4 @@ Replaces the internal velocity in the collision avoidance simulation with ``velo .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_navigationagent3d.rst b/classes/class_navigationagent3d.rst index 53d74f81579f..0aaf75c0b610 100644 --- a/classes/class_navigationagent3d.rst +++ b/classes/class_navigationagent3d.rst @@ -40,59 +40,59 @@ Properties .. table:: :widths: auto - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`bool` | :ref:`avoidance_enabled` | ``false`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`int` | :ref:`avoidance_layers` | ``1`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`int` | :ref:`avoidance_mask` | ``1`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`float` | :ref:`avoidance_priority` | ``1.0`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`bool` | :ref:`debug_enabled` | ``false`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`Color` | :ref:`debug_path_custom_color` | ``Color(1, 1, 1, 1)`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`float` | :ref:`debug_path_custom_point_size` | ``4.0`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`bool` | :ref:`debug_use_custom` | ``false`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`float` | :ref:`height` | ``1.0`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`int` | :ref:`max_neighbors` | ``10`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`float` | :ref:`max_speed` | ``10.0`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`int` | :ref:`navigation_layers` | ``1`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`float` | :ref:`neighbor_distance` | ``50.0`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`float` | :ref:`path_desired_distance` | ``1.0`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`float` | :ref:`path_height_offset` | ``0.0`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`float` | :ref:`path_max_distance` | ``5.0`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`PathMetadataFlags` | :ref:`path_metadata_flags` | ``7`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`PathPostProcessing` | :ref:`path_postprocessing` | ``0`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`PathfindingAlgorithm` | :ref:`pathfinding_algorithm` | ``0`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`float` | :ref:`radius` | ``0.5`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`float` | :ref:`target_desired_distance` | ``1.0`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`Vector3` | :ref:`target_position` | ``Vector3(0, 0, 0)`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`float` | :ref:`time_horizon_agents` | ``1.0`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`float` | :ref:`time_horizon_obstacles` | ``0.0`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`bool` | :ref:`use_3d_avoidance` | ``false`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`Vector3` | :ref:`velocity` | ``Vector3(0, 0, 0)`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`bool` | :ref:`avoidance_enabled` | ``false`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`int` | :ref:`avoidance_layers` | ``1`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`int` | :ref:`avoidance_mask` | ``1`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`float` | :ref:`avoidance_priority` | ``1.0`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`bool` | :ref:`debug_enabled` | ``false`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`Color` | :ref:`debug_path_custom_color` | ``Color(1, 1, 1, 1)`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`float` | :ref:`debug_path_custom_point_size` | ``4.0`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`bool` | :ref:`debug_use_custom` | ``false`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`float` | :ref:`height` | ``1.0`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`int` | :ref:`max_neighbors` | ``10`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`float` | :ref:`max_speed` | ``10.0`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`int` | :ref:`navigation_layers` | ``1`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`float` | :ref:`neighbor_distance` | ``50.0`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`float` | :ref:`path_desired_distance` | ``1.0`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`float` | :ref:`path_height_offset` | ``0.0`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`float` | :ref:`path_max_distance` | ``5.0`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | |bitfield|\<:ref:`PathMetadataFlags`\> | :ref:`path_metadata_flags` | ``7`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`PathPostProcessing` | :ref:`path_postprocessing` | ``0`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`PathfindingAlgorithm` | :ref:`pathfinding_algorithm` | ``0`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`float` | :ref:`radius` | ``0.5`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`float` | :ref:`target_desired_distance` | ``1.0`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`Vector3` | :ref:`target_position` | ``Vector3(0, 0, 0)`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`float` | :ref:`time_horizon_agents` | ``1.0`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`float` | :ref:`time_horizon_obstacles` | ``0.0`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`bool` | :ref:`use_3d_avoidance` | ``false`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`Vector3` | :ref:`velocity` | ``Vector3(0, 0, 0)`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------------------+ .. rst-class:: classref-reftable-group @@ -528,12 +528,12 @@ The maximum distance the agent is allowed away from the ideal path to the final .. rst-class:: classref-property -:ref:`PathMetadataFlags` **path_metadata_flags** = ``7`` +|bitfield|\<:ref:`PathMetadataFlags`\> **path_metadata_flags** = ``7`` .. rst-class:: classref-property-setget -- void **set_path_metadata_flags** **(** :ref:`PathMetadataFlags` value **)** -- :ref:`PathMetadataFlags` **get_path_metadata_flags** **(** **)** +- void **set_path_metadata_flags** **(** |bitfield|\<:ref:`PathMetadataFlags`\> value **)** +- |bitfield|\<:ref:`PathMetadataFlags`\> **get_path_metadata_flags** **(** **)** Additional information to return with the navigation path. @@ -933,3 +933,4 @@ Replaces the internal velocity in the collision avoidance simulation with ``velo .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_navigationlink2d.rst b/classes/class_navigationlink2d.rst index 229399a65aa0..d7da9c51b34d 100644 --- a/classes/class_navigationlink2d.rst +++ b/classes/class_navigationlink2d.rst @@ -289,3 +289,4 @@ Based on ``value``, enables or disables the specified layer in the :ref:`navigat .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_navigationlink3d.rst b/classes/class_navigationlink3d.rst index 73a748046526..9ed2fb436cdc 100644 --- a/classes/class_navigationlink3d.rst +++ b/classes/class_navigationlink3d.rst @@ -289,3 +289,4 @@ Based on ``value``, enables or disables the specified layer in the :ref:`navigat .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_navigationmesh.rst b/classes/class_navigationmesh.rst index 9d9b6ead509a..f80ba8ffef69 100644 --- a/classes/class_navigationmesh.rst +++ b/classes/class_navigationmesh.rst @@ -339,7 +339,7 @@ The distance to erode/shrink the walkable area of the heightfield away from obst - void **set_cell_height** **(** :ref:`float` value **)** - :ref:`float` **get_cell_height** **(** **)** -The Y axis cell size to use for fields. +The cell height used to rasterize the navigation mesh vertices on the Y axis. Must match with the cell height on the navigation map. .. rst-class:: classref-item-separator @@ -356,7 +356,7 @@ The Y axis cell size to use for fields. - void **set_cell_size** **(** :ref:`float` value **)** - :ref:`float` **get_cell_size** **(** **)** -The XZ plane cell size to use for fields. +The cell size used to rasterize the navigation mesh vertices on the XZ plane. Must match with the cell size on the navigation map. .. rst-class:: classref-item-separator @@ -778,3 +778,4 @@ Sets the vertices that can be then indexed to create polygons with the :ref:`add .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_navigationmeshgenerator.rst b/classes/class_navigationmeshgenerator.rst index daa381d6789d..6eb247e2e4ab 100644 --- a/classes/class_navigationmeshgenerator.rst +++ b/classes/class_navigationmeshgenerator.rst @@ -44,11 +44,15 @@ Methods .. table:: :widths: auto - +------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`bake` **(** :ref:`NavigationMesh` navigation_mesh, :ref:`Node` root_node **)** | - +------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`clear` **(** :ref:`NavigationMesh` navigation_mesh **)** | - +------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`bake` **(** :ref:`NavigationMesh` navigation_mesh, :ref:`Node` root_node **)** | + +------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`bake_from_source_geometry_data` **(** :ref:`NavigationMesh` navigation_mesh, :ref:`NavigationMeshSourceGeometryData3D` source_geometry_data, :ref:`Callable` callback=Callable() **)** | + +------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`clear` **(** :ref:`NavigationMesh` navigation_mesh **)** | + +------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`parse_source_geometry_data` **(** :ref:`NavigationMesh` navigation_mesh, :ref:`NavigationMeshSourceGeometryData3D` source_geometry_data, :ref:`Node` root_node, :ref:`Callable` callback=Callable() **)** | + +------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator @@ -65,7 +69,19 @@ Method Descriptions void **bake** **(** :ref:`NavigationMesh` navigation_mesh, :ref:`Node` root_node **)** -Bakes navigation data to the provided ``navigation_mesh`` by parsing child nodes under the provided ``root_node`` or a specific group of nodes for potential source geometry. The parse behavior can be controlled with the :ref:`NavigationMesh.geometry_parsed_geometry_type` and :ref:`NavigationMesh.geometry_source_geometry_mode` properties on the :ref:`NavigationMesh` resource. +The bake function is deprecated due to core threading changes. To upgrade existing code, first create a :ref:`NavigationMeshSourceGeometryData3D` resource. Use this resource with :ref:`parse_source_geometry_data` to parse the SceneTree for nodes that should contribute to the navigation mesh baking. The SceneTree parsing needs to happen on the main thread. After the parsing is finished use the resource with :ref:`bake_from_source_geometry_data` to bake a navigation mesh. + +.. rst-class:: classref-item-separator + +---- + +.. _class_NavigationMeshGenerator_method_bake_from_source_geometry_data: + +.. rst-class:: classref-method + +void **bake_from_source_geometry_data** **(** :ref:`NavigationMesh` navigation_mesh, :ref:`NavigationMeshSourceGeometryData3D` source_geometry_data, :ref:`Callable` callback=Callable() **)** + +Bakes the provided ``navigation_mesh`` with the data from the provided ``source_geometry_data``. After the process is finished the optional ``callback`` will be called. .. rst-class:: classref-item-separator @@ -79,9 +95,24 @@ void **clear** **(** :ref:`NavigationMesh` navigation_mesh Removes all polygons and vertices from the provided ``navigation_mesh`` resource. +.. rst-class:: classref-item-separator + +---- + +.. _class_NavigationMeshGenerator_method_parse_source_geometry_data: + +.. rst-class:: classref-method + +void **parse_source_geometry_data** **(** :ref:`NavigationMesh` navigation_mesh, :ref:`NavigationMeshSourceGeometryData3D` source_geometry_data, :ref:`Node` root_node, :ref:`Callable` callback=Callable() **)** + +Parses the :ref:`SceneTree` for source geometry according to the properties of ``navigation_mesh``. Updates the provided ``source_geometry_data`` resource with the resulting data. The resource can then be used to bake a navigation mesh with :ref:`bake_from_source_geometry_data`. After the process is finished the optional ``callback`` will be called. + +\ **Note:** This function needs to run on the main thread or with a deferred call as the SceneTree is not thread-safe. + .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)` .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)` .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)` .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_navigationmeshsourcegeometrydata3d.rst b/classes/class_navigationmeshsourcegeometrydata3d.rst new file mode 100644 index 000000000000..11a11ce94470 --- /dev/null +++ b/classes/class_navigationmeshsourcegeometrydata3d.rst @@ -0,0 +1,175 @@ +:github_url: hide + +.. DO NOT EDIT THIS FILE!!! +.. Generated automatically from Godot engine sources. +.. Generator: https://github.com/godotengine/godot/tree/master/doc/tools/make_rst.py. +.. XML source: https://github.com/godotengine/godot/tree/master/doc/classes/NavigationMeshSourceGeometryData3D.xml. + +.. _class_NavigationMeshSourceGeometryData3D: + +NavigationMeshSourceGeometryData3D +================================== + +**Inherits:** :ref:`Resource` **<** :ref:`RefCounted` **<** :ref:`Object` + +Container for parsed source geometry data used in navigation mesh baking. + +.. rst-class:: classref-introduction-group + +Description +----------- + +Container for parsed source geometry data used in navigation mesh baking. + +.. rst-class:: classref-reftable-group + +Methods +------- + +.. table:: + :widths: auto + + +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`add_faces` **(** :ref:`PackedVector3Array` faces, :ref:`Transform3D` xform **)** | + +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`add_mesh` **(** :ref:`Mesh` mesh, :ref:`Transform3D` xform **)** | + +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`add_mesh_array` **(** :ref:`Array` mesh_array, :ref:`Transform3D` xform **)** | + +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`clear` **(** **)** | + +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedInt32Array` | :ref:`get_indices` **(** **)** |const| | + +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedFloat32Array` | :ref:`get_vertices` **(** **)** |const| | + +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`has_data` **(** **)** | + +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`set_indices` **(** :ref:`PackedInt32Array` indices **)** | + +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`set_vertices` **(** :ref:`PackedFloat32Array` vertices **)** | + +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +.. rst-class:: classref-section-separator + +---- + +.. rst-class:: classref-descriptions-group + +Method Descriptions +------------------- + +.. _class_NavigationMeshSourceGeometryData3D_method_add_faces: + +.. rst-class:: classref-method + +void **add_faces** **(** :ref:`PackedVector3Array` faces, :ref:`Transform3D` xform **)** + +Adds an array of vertex positions to the geometry data for navigation mesh baking to form triangulated faces. For each face the array must have three vertex positions in clockwise winding order. Since :ref:`NavigationMesh` resource have no transform all vertex positions need to be offset by the node's transform using the ``xform`` parameter. + +.. rst-class:: classref-item-separator + +---- + +.. _class_NavigationMeshSourceGeometryData3D_method_add_mesh: + +.. rst-class:: classref-method + +void **add_mesh** **(** :ref:`Mesh` mesh, :ref:`Transform3D` xform **)** + +Adds the geometry data of a :ref:`Mesh` resource to the navigation mesh baking data. The mesh must have valid triangulated mesh data to be considered. Since :ref:`NavigationMesh` resource have no transform all vertex positions need to be offset by the node's transform using the ``xform`` parameter. + +.. rst-class:: classref-item-separator + +---- + +.. _class_NavigationMeshSourceGeometryData3D_method_add_mesh_array: + +.. rst-class:: classref-method + +void **add_mesh_array** **(** :ref:`Array` mesh_array, :ref:`Transform3D` xform **)** + +Adds an :ref:`Array` the size of :ref:`Mesh.ARRAY_MAX` and with vertices at index :ref:`Mesh.ARRAY_VERTEX` and indices at index :ref:`Mesh.ARRAY_INDEX` to the navigation mesh baking data. The array must have valid triangulated mesh data to be considered. Since :ref:`NavigationMesh` resource have no transform all vertex positions need to be offset by the node's transform using the ``xform`` parameter. + +.. rst-class:: classref-item-separator + +---- + +.. _class_NavigationMeshSourceGeometryData3D_method_clear: + +.. rst-class:: classref-method + +void **clear** **(** **)** + +Clears the internal data. + +.. rst-class:: classref-item-separator + +---- + +.. _class_NavigationMeshSourceGeometryData3D_method_get_indices: + +.. rst-class:: classref-method + +:ref:`PackedInt32Array` **get_indices** **(** **)** |const| + +Returns the parsed source geometry data indices array. + +.. rst-class:: classref-item-separator + +---- + +.. _class_NavigationMeshSourceGeometryData3D_method_get_vertices: + +.. rst-class:: classref-method + +:ref:`PackedFloat32Array` **get_vertices** **(** **)** |const| + +Returns the parsed source geometry data vertices array. + +.. rst-class:: classref-item-separator + +---- + +.. _class_NavigationMeshSourceGeometryData3D_method_has_data: + +.. rst-class:: classref-method + +:ref:`bool` **has_data** **(** **)** + +Returns **true** when parsed source geometry data exists. + +.. rst-class:: classref-item-separator + +---- + +.. _class_NavigationMeshSourceGeometryData3D_method_set_indices: + +.. rst-class:: classref-method + +void **set_indices** **(** :ref:`PackedInt32Array` indices **)** + +Sets the parsed source geometry data indices. The indices need to be matched with appropriated vertices. + +\ **Warning:** Inappropriate data can crash the baking process of the involved third-party libraries. + +.. rst-class:: classref-item-separator + +---- + +.. _class_NavigationMeshSourceGeometryData3D_method_set_vertices: + +.. rst-class:: classref-method + +void **set_vertices** **(** :ref:`PackedFloat32Array` vertices **)** + +Sets the parsed source geometry data vertices. The vertices need to be matched with appropriated indices. + +\ **Warning:** Inappropriate data can crash the baking process of the involved third-party libraries. + +.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)` +.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)` +.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)` +.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` +.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` +.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_navigationobstacle2d.rst b/classes/class_navigationobstacle2d.rst index e20634ddda6d..2b679abc52da 100644 --- a/classes/class_navigationobstacle2d.rst +++ b/classes/class_navigationobstacle2d.rst @@ -42,15 +42,17 @@ Properties .. table:: :widths: auto - +-----------------------------------------------------+-------------------------------------------------------------------------------+--------------------------+ - | :ref:`int` | :ref:`avoidance_layers` | ``1`` | - +-----------------------------------------------------+-------------------------------------------------------------------------------+--------------------------+ - | :ref:`float` | :ref:`radius` | ``0.0`` | - +-----------------------------------------------------+-------------------------------------------------------------------------------+--------------------------+ - | :ref:`Vector2` | :ref:`velocity` | ``Vector2(0, 0)`` | - +-----------------------------------------------------+-------------------------------------------------------------------------------+--------------------------+ - | :ref:`PackedVector2Array` | :ref:`vertices` | ``PackedVector2Array()`` | - +-----------------------------------------------------+-------------------------------------------------------------------------------+--------------------------+ + +-----------------------------------------------------+---------------------------------------------------------------------------------+--------------------------+ + | :ref:`bool` | :ref:`avoidance_enabled` | ``true`` | + +-----------------------------------------------------+---------------------------------------------------------------------------------+--------------------------+ + | :ref:`int` | :ref:`avoidance_layers` | ``1`` | + +-----------------------------------------------------+---------------------------------------------------------------------------------+--------------------------+ + | :ref:`float` | :ref:`radius` | ``0.0`` | + +-----------------------------------------------------+---------------------------------------------------------------------------------+--------------------------+ + | :ref:`Vector2` | :ref:`velocity` | ``Vector2(0, 0)`` | + +-----------------------------------------------------+---------------------------------------------------------------------------------+--------------------------+ + | :ref:`PackedVector2Array` | :ref:`vertices` | ``PackedVector2Array()`` | + +-----------------------------------------------------+---------------------------------------------------------------------------------+--------------------------+ .. rst-class:: classref-reftable-group @@ -60,14 +62,12 @@ Methods .. table:: :widths: auto - +-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`get_agent_rid` **(** **)** |const| | +-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`get_avoidance_layer_value` **(** :ref:`int` layer_number **)** |const| | +-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`RID` | :ref:`get_navigation_map` **(** **)** |const| | +-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`get_obstacle_rid` **(** **)** |const| | + | :ref:`RID` | :ref:`get_rid` **(** **)** |const| | +-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`set_avoidance_layer_value` **(** :ref:`int` layer_number, :ref:`bool` value **)** | +-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -83,6 +83,23 @@ Methods Property Descriptions --------------------- +.. _class_NavigationObstacle2D_property_avoidance_enabled: + +.. rst-class:: classref-property + +:ref:`bool` **avoidance_enabled** = ``true`` + +.. rst-class:: classref-property-setget + +- void **set_avoidance_enabled** **(** :ref:`bool` value **)** +- :ref:`bool` **get_avoidance_enabled** **(** **)** + +If ``true`` the obstacle affects avoidance using agents. + +.. rst-class:: classref-item-separator + +---- + .. _class_NavigationObstacle2D_property_avoidance_layers: .. rst-class:: classref-property @@ -156,18 +173,6 @@ The outline vertices of the obstacle. If the vertices are winded in clockwise or Method Descriptions ------------------- -.. _class_NavigationObstacle2D_method_get_agent_rid: - -.. rst-class:: classref-method - -:ref:`RID` **get_agent_rid** **(** **)** |const| - -Returns the :ref:`RID` of this agent on the :ref:`NavigationServer2D`. This :ref:`RID` is used for the moving avoidance "obstacle" component (using a fake avoidance agent) which size is defined by :ref:`radius` and velocity set by using :ref:`velocity`. - -.. rst-class:: classref-item-separator - ----- - .. _class_NavigationObstacle2D_method_get_avoidance_layer_value: .. rst-class:: classref-method @@ -192,13 +197,13 @@ Returns the :ref:`RID` of the navigation map for this NavigationObsta ---- -.. _class_NavigationObstacle2D_method_get_obstacle_rid: +.. _class_NavigationObstacle2D_method_get_rid: .. rst-class:: classref-method -:ref:`RID` **get_obstacle_rid** **(** **)** |const| +:ref:`RID` **get_rid** **(** **)** |const| -Returns the :ref:`RID` of this obstacle on the :ref:`NavigationServer2D`. This :ref:`RID` is used for the static avoidance obstacle component which shape is defined by :ref:`vertices`. +Returns the :ref:`RID` of this obstacle on the :ref:`NavigationServer2D`. .. rst-class:: classref-item-separator @@ -230,3 +235,4 @@ Sets the :ref:`RID` of the navigation map this NavigationObstacle nod .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_navigationobstacle3d.rst b/classes/class_navigationobstacle3d.rst index d6e208271bc6..048f64a00081 100644 --- a/classes/class_navigationobstacle3d.rst +++ b/classes/class_navigationobstacle3d.rst @@ -42,19 +42,21 @@ Properties .. table:: :widths: auto - +-----------------------------------------------------+-------------------------------------------------------------------------------+--------------------------+ - | :ref:`int` | :ref:`avoidance_layers` | ``1`` | - +-----------------------------------------------------+-------------------------------------------------------------------------------+--------------------------+ - | :ref:`float` | :ref:`height` | ``1.0`` | - +-----------------------------------------------------+-------------------------------------------------------------------------------+--------------------------+ - | :ref:`float` | :ref:`radius` | ``0.0`` | - +-----------------------------------------------------+-------------------------------------------------------------------------------+--------------------------+ - | :ref:`bool` | :ref:`use_3d_avoidance` | ``false`` | - +-----------------------------------------------------+-------------------------------------------------------------------------------+--------------------------+ - | :ref:`Vector3` | :ref:`velocity` | ``Vector3(0, 0, 0)`` | - +-----------------------------------------------------+-------------------------------------------------------------------------------+--------------------------+ - | :ref:`PackedVector3Array` | :ref:`vertices` | ``PackedVector3Array()`` | - +-----------------------------------------------------+-------------------------------------------------------------------------------+--------------------------+ + +-----------------------------------------------------+---------------------------------------------------------------------------------+--------------------------+ + | :ref:`bool` | :ref:`avoidance_enabled` | ``true`` | + +-----------------------------------------------------+---------------------------------------------------------------------------------+--------------------------+ + | :ref:`int` | :ref:`avoidance_layers` | ``1`` | + +-----------------------------------------------------+---------------------------------------------------------------------------------+--------------------------+ + | :ref:`float` | :ref:`height` | ``1.0`` | + +-----------------------------------------------------+---------------------------------------------------------------------------------+--------------------------+ + | :ref:`float` | :ref:`radius` | ``0.0`` | + +-----------------------------------------------------+---------------------------------------------------------------------------------+--------------------------+ + | :ref:`bool` | :ref:`use_3d_avoidance` | ``false`` | + +-----------------------------------------------------+---------------------------------------------------------------------------------+--------------------------+ + | :ref:`Vector3` | :ref:`velocity` | ``Vector3(0, 0, 0)`` | + +-----------------------------------------------------+---------------------------------------------------------------------------------+--------------------------+ + | :ref:`PackedVector3Array` | :ref:`vertices` | ``PackedVector3Array()`` | + +-----------------------------------------------------+---------------------------------------------------------------------------------+--------------------------+ .. rst-class:: classref-reftable-group @@ -64,14 +66,12 @@ Methods .. table:: :widths: auto - +-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`get_agent_rid` **(** **)** |const| | +-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`get_avoidance_layer_value` **(** :ref:`int` layer_number **)** |const| | +-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`RID` | :ref:`get_navigation_map` **(** **)** |const| | +-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`get_obstacle_rid` **(** **)** |const| | + | :ref:`RID` | :ref:`get_rid` **(** **)** |const| | +-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`set_avoidance_layer_value` **(** :ref:`int` layer_number, :ref:`bool` value **)** | +-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -87,6 +87,23 @@ Methods Property Descriptions --------------------- +.. _class_NavigationObstacle3D_property_avoidance_enabled: + +.. rst-class:: classref-property + +:ref:`bool` **avoidance_enabled** = ``true`` + +.. rst-class:: classref-property-setget + +- void **set_avoidance_enabled** **(** :ref:`bool` value **)** +- :ref:`bool` **get_avoidance_enabled** **(** **)** + +If ``true`` the obstacle affects avoidance using agents. + +.. rst-class:: classref-item-separator + +---- + .. _class_NavigationObstacle3D_property_avoidance_layers: .. rst-class:: classref-property @@ -196,18 +213,6 @@ The outline vertices of the obstacle. If the vertices are winded in clockwise or Method Descriptions ------------------- -.. _class_NavigationObstacle3D_method_get_agent_rid: - -.. rst-class:: classref-method - -:ref:`RID` **get_agent_rid** **(** **)** |const| - -Returns the :ref:`RID` of this agent on the :ref:`NavigationServer3D`. This :ref:`RID` is used for the moving avoidance "obstacle" component (using a fake avoidance agent) which size is defined by :ref:`radius` and velocity set by using :ref:`velocity`. - -.. rst-class:: classref-item-separator - ----- - .. _class_NavigationObstacle3D_method_get_avoidance_layer_value: .. rst-class:: classref-method @@ -232,13 +237,13 @@ Returns the :ref:`RID` of the navigation map for this NavigationObsta ---- -.. _class_NavigationObstacle3D_method_get_obstacle_rid: +.. _class_NavigationObstacle3D_method_get_rid: .. rst-class:: classref-method -:ref:`RID` **get_obstacle_rid** **(** **)** |const| +:ref:`RID` **get_rid** **(** **)** |const| -Returns the :ref:`RID` of this obstacle on the :ref:`NavigationServer3D`. This :ref:`RID` is used for the static avoidance obstacle component which shape is defined by :ref:`vertices`. +Returns the :ref:`RID` of this obstacle on the :ref:`NavigationServer3D`. .. rst-class:: classref-item-separator @@ -270,3 +275,4 @@ Sets the :ref:`RID` of the navigation map this NavigationObstacle nod .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_navigationpathqueryparameters2d.rst b/classes/class_navigationpathqueryparameters2d.rst index 30b73f6c414c..19a74f3c5564 100644 --- a/classes/class_navigationpathqueryparameters2d.rst +++ b/classes/class_navigationpathqueryparameters2d.rst @@ -36,21 +36,21 @@ Properties .. table:: :widths: auto - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-------------------+ - | :ref:`RID` | :ref:`map` | | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-------------------+ - | :ref:`PathMetadataFlags` | :ref:`metadata_flags` | ``7`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-------------------+ - | :ref:`int` | :ref:`navigation_layers` | ``1`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-------------------+ - | :ref:`PathPostProcessing` | :ref:`path_postprocessing` | ``0`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-------------------+ - | :ref:`PathfindingAlgorithm` | :ref:`pathfinding_algorithm` | ``0`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-------------------+ - | :ref:`Vector2` | :ref:`start_position` | ``Vector2(0, 0)`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-------------------+ - | :ref:`Vector2` | :ref:`target_position` | ``Vector2(0, 0)`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-------------------+ + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-------------------+ + | :ref:`RID` | :ref:`map` | ``RID()`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-------------------+ + | |bitfield|\<:ref:`PathMetadataFlags`\> | :ref:`metadata_flags` | ``7`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-------------------+ + | :ref:`int` | :ref:`navigation_layers` | ``1`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-------------------+ + | :ref:`PathPostProcessing` | :ref:`path_postprocessing` | ``0`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-------------------+ + | :ref:`PathfindingAlgorithm` | :ref:`pathfinding_algorithm` | ``0`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-------------------+ + | :ref:`Vector2` | :ref:`start_position` | ``Vector2(0, 0)`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-------------------+ + | :ref:`Vector2` | :ref:`target_position` | ``Vector2(0, 0)`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-------------------+ .. rst-class:: classref-section-separator @@ -164,7 +164,7 @@ Property Descriptions .. rst-class:: classref-property -:ref:`RID` **map** +:ref:`RID` **map** = ``RID()`` .. rst-class:: classref-property-setget @@ -181,12 +181,12 @@ The navigation ``map`` :ref:`RID` used in the path query. .. rst-class:: classref-property -:ref:`PathMetadataFlags` **metadata_flags** = ``7`` +|bitfield|\<:ref:`PathMetadataFlags`\> **metadata_flags** = ``7`` .. rst-class:: classref-property-setget -- void **set_metadata_flags** **(** :ref:`PathMetadataFlags` value **)** -- :ref:`PathMetadataFlags` **get_metadata_flags** **(** **)** +- void **set_metadata_flags** **(** |bitfield|\<:ref:`PathMetadataFlags`\> value **)** +- |bitfield|\<:ref:`PathMetadataFlags`\> **get_metadata_flags** **(** **)** Additional information to include with the navigation path. @@ -281,3 +281,4 @@ The pathfinding target position in global coordinates. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_navigationpathqueryparameters3d.rst b/classes/class_navigationpathqueryparameters3d.rst index 50ddf2c85fb8..f34119a6dabe 100644 --- a/classes/class_navigationpathqueryparameters3d.rst +++ b/classes/class_navigationpathqueryparameters3d.rst @@ -36,21 +36,21 @@ Properties .. table:: :widths: auto - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+----------------------+ - | :ref:`RID` | :ref:`map` | | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+----------------------+ - | :ref:`PathMetadataFlags` | :ref:`metadata_flags` | ``7`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+----------------------+ - | :ref:`int` | :ref:`navigation_layers` | ``1`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+----------------------+ - | :ref:`PathPostProcessing` | :ref:`path_postprocessing` | ``0`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+----------------------+ - | :ref:`PathfindingAlgorithm` | :ref:`pathfinding_algorithm` | ``0`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+----------------------+ - | :ref:`Vector3` | :ref:`start_position` | ``Vector3(0, 0, 0)`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+----------------------+ - | :ref:`Vector3` | :ref:`target_position` | ``Vector3(0, 0, 0)`` | - +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+----------------------+ + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+----------------------+ + | :ref:`RID` | :ref:`map` | ``RID()`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+----------------------+ + | |bitfield|\<:ref:`PathMetadataFlags`\> | :ref:`metadata_flags` | ``7`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+----------------------+ + | :ref:`int` | :ref:`navigation_layers` | ``1`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+----------------------+ + | :ref:`PathPostProcessing` | :ref:`path_postprocessing` | ``0`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+----------------------+ + | :ref:`PathfindingAlgorithm` | :ref:`pathfinding_algorithm` | ``0`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+----------------------+ + | :ref:`Vector3` | :ref:`start_position` | ``Vector3(0, 0, 0)`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+----------------------+ + | :ref:`Vector3` | :ref:`target_position` | ``Vector3(0, 0, 0)`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+----------------------+ .. rst-class:: classref-section-separator @@ -164,7 +164,7 @@ Property Descriptions .. rst-class:: classref-property -:ref:`RID` **map** +:ref:`RID` **map** = ``RID()`` .. rst-class:: classref-property-setget @@ -181,12 +181,12 @@ The navigation ``map`` :ref:`RID` used in the path query. .. rst-class:: classref-property -:ref:`PathMetadataFlags` **metadata_flags** = ``7`` +|bitfield|\<:ref:`PathMetadataFlags`\> **metadata_flags** = ``7`` .. rst-class:: classref-property-setget -- void **set_metadata_flags** **(** :ref:`PathMetadataFlags` value **)** -- :ref:`PathMetadataFlags` **get_metadata_flags** **(** **)** +- void **set_metadata_flags** **(** |bitfield|\<:ref:`PathMetadataFlags`\> value **)** +- |bitfield|\<:ref:`PathMetadataFlags`\> **get_metadata_flags** **(** **)** Additional information to include with the navigation path. @@ -281,3 +281,4 @@ The pathfinding target position in global coordinates. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_navigationpathqueryresult2d.rst b/classes/class_navigationpathqueryresult2d.rst index f9f1e14da976..bce6999c3cd3 100644 --- a/classes/class_navigationpathqueryresult2d.rst +++ b/classes/class_navigationpathqueryresult2d.rst @@ -185,3 +185,4 @@ Reset the result object to its initial state. This is useful to reuse the object .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_navigationpathqueryresult3d.rst b/classes/class_navigationpathqueryresult3d.rst index be5da0aee5a5..13067bad99e8 100644 --- a/classes/class_navigationpathqueryresult3d.rst +++ b/classes/class_navigationpathqueryresult3d.rst @@ -185,3 +185,4 @@ Reset the result object to its initial state. This is useful to reuse the object .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_navigationpolygon.rst b/classes/class_navigationpolygon.rst index 79d5e9097659..9554ba0f5c7c 100644 --- a/classes/class_navigationpolygon.rst +++ b/classes/class_navigationpolygon.rst @@ -80,6 +80,18 @@ Tutorials .. rst-class:: classref-reftable-group +Properties +---------- + +.. table:: + :widths: auto + + +---------------------------+--------------------------------------------------------------+---------+ + | :ref:`float` | :ref:`cell_size` | ``1.0`` | + +---------------------------+--------------------------------------------------------------+---------+ + +.. rst-class:: classref-reftable-group + Methods ------- @@ -124,6 +136,28 @@ Methods .. rst-class:: classref-descriptions-group +Property Descriptions +--------------------- + +.. _class_NavigationPolygon_property_cell_size: + +.. rst-class:: classref-property + +:ref:`float` **cell_size** = ``1.0`` + +.. rst-class:: classref-property-setget + +- void **set_cell_size** **(** :ref:`float` value **)** +- :ref:`float` **get_cell_size** **(** **)** + +The cell size used to rasterize the navigation mesh vertices. Must match with the cell size on the navigation map. + +.. rst-class:: classref-section-separator + +---- + +.. rst-class:: classref-descriptions-group + Method Descriptions ------------------- @@ -309,3 +343,4 @@ Sets the vertices that can be then indexed to create polygons with the :ref:`add .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_navigationregion2d.rst b/classes/class_navigationregion2d.rst index 2a156c76fda7..a280690b58c4 100644 --- a/classes/class_navigationregion2d.rst +++ b/classes/class_navigationregion2d.rst @@ -300,3 +300,4 @@ Based on ``value``, enables or disables the specified layer in the :ref:`navigat .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_navigationregion3d.rst b/classes/class_navigationregion3d.rst index f5c5a6f0df69..8e5df8075582 100644 --- a/classes/class_navigationregion3d.rst +++ b/classes/class_navigationregion3d.rst @@ -275,3 +275,4 @@ Based on ``value``, enables or disables the specified layer in the :ref:`navigat .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_navigationserver2d.rst b/classes/class_navigationserver2d.rst index f111b9071d55..961a474a6467 100644 --- a/classes/class_navigationserver2d.rst +++ b/classes/class_navigationserver2d.rst @@ -59,6 +59,8 @@ Methods +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`RID` | :ref:`agent_get_map` **(** :ref:`RID` agent **)** |const| | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`agent_get_paused` **(** :ref:`RID` agent **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`agent_is_map_changed` **(** :ref:`RID` agent **)** |const| | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`agent_set_avoidance_callback` **(** :ref:`RID` agent, :ref:`Callable` callback **)** | @@ -79,6 +81,8 @@ Methods +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`agent_set_neighbor_distance` **(** :ref:`RID` agent, :ref:`float` distance **)** | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`agent_set_paused` **(** :ref:`RID` agent, :ref:`bool` paused **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`agent_set_position` **(** :ref:`RID` agent, :ref:`Vector2` position **)** | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`agent_set_radius` **(** :ref:`RID` agent, :ref:`float` radius **)** | @@ -171,14 +175,26 @@ Methods +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`RID` | :ref:`obstacle_create` **(** **)** | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`obstacle_get_avoidance_enabled` **(** :ref:`RID` obstacle **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`RID` | :ref:`obstacle_get_map` **(** :ref:`RID` obstacle **)** |const| | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`obstacle_get_paused` **(** :ref:`RID` obstacle **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`obstacle_set_avoidance_enabled` **(** :ref:`RID` obstacle, :ref:`bool` enabled **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`obstacle_set_avoidance_layers` **(** :ref:`RID` obstacle, :ref:`int` layers **)** | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`obstacle_set_map` **(** :ref:`RID` obstacle, :ref:`RID` map **)** | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`obstacle_set_paused` **(** :ref:`RID` obstacle, :ref:`bool` paused **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`obstacle_set_position` **(** :ref:`RID` obstacle, :ref:`Vector2` position **)** | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`obstacle_set_radius` **(** :ref:`RID` obstacle, :ref:`float` radius **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`obstacle_set_velocity` **(** :ref:`RID` obstacle, :ref:`Vector2` velocity **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`obstacle_set_vertices` **(** :ref:`RID` obstacle, :ref:`PackedVector2Array` vertices **)** | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`query_path` **(** :ref:`NavigationPathQueryParameters2D` parameters, :ref:`NavigationPathQueryResult2D` result **)** |const| | @@ -298,6 +314,18 @@ Returns the navigation map :ref:`RID` the requested ``agent`` is curr ---- +.. _class_NavigationServer2D_method_agent_get_paused: + +.. rst-class:: classref-method + +:ref:`bool` **agent_get_paused** **(** :ref:`RID` agent **)** |const| + +Returns ``true`` if the specified ``agent`` is paused. + +.. rst-class:: classref-item-separator + +---- + .. _class_NavigationServer2D_method_agent_is_map_changed: .. rst-class:: classref-method @@ -422,6 +450,18 @@ Sets the maximum distance to other agents this agent takes into account in the n ---- +.. _class_NavigationServer2D_method_agent_set_paused: + +.. rst-class:: classref-method + +void **agent_set_paused** **(** :ref:`RID` agent, :ref:`bool` paused **)** + +If ``paused`` is true the specified ``agent`` will not be processed, e.g. calculate avoidance velocities or receive avoidance callbacks. + +.. rst-class:: classref-item-separator + +---- + .. _class_NavigationServer2D_method_agent_set_position: .. rst-class:: classref-method @@ -476,7 +516,7 @@ The minimal amount of time for which the agent's velocities that are computed by void **agent_set_velocity** **(** :ref:`RID` agent, :ref:`Vector2` velocity **)** -Sets ``velocity`` as the new wanted velocity for the specified ``agent``. The avoidance simulation will try to fulfil this velocity if possible but will modify it to avoid collision with other agent's and obstacles. When an agent is teleported to a new position far away use :ref:`agent_set_velocity_forced` instead to reset the internal velocity state. +Sets ``velocity`` as the new wanted velocity for the specified ``agent``. The avoidance simulation will try to fulfill this velocity if possible but will modify it to avoid collision with other agent's and obstacles. When an agent is teleported to a new position far away use :ref:`agent_set_velocity_forced` instead to reset the internal velocity state. .. rst-class:: classref-item-separator @@ -782,7 +822,7 @@ Returns all navigation agents :ref:`RID`\ s that are currently assign :ref:`float` **map_get_cell_size** **(** :ref:`RID` map **)** |const| -Returns the map cell size. +Returns the map cell size used to rasterize the navigation mesh vertices. .. rst-class:: classref-item-separator @@ -926,7 +966,7 @@ Sets the map active. void **map_set_cell_size** **(** :ref:`RID` map, :ref:`float` cell_size **)** -Set the map cell size used to weld the navigation mesh polygons. +Sets the map cell size used to rasterize the navigation mesh vertices. Must match with the cell size of the used navigation meshes. .. rst-class:: classref-item-separator @@ -980,6 +1020,18 @@ Creates a new navigation obstacle. ---- +.. _class_NavigationServer2D_method_obstacle_get_avoidance_enabled: + +.. rst-class:: classref-method + +:ref:`bool` **obstacle_get_avoidance_enabled** **(** :ref:`RID` obstacle **)** |const| + +Returns ``true`` if the provided ``obstacle`` has avoidance enabled. + +.. rst-class:: classref-item-separator + +---- + .. _class_NavigationServer2D_method_obstacle_get_map: .. rst-class:: classref-method @@ -992,15 +1044,37 @@ Returns the navigation map :ref:`RID` the requested ``obstacle`` is c ---- +.. _class_NavigationServer2D_method_obstacle_get_paused: + +.. rst-class:: classref-method + +:ref:`bool` **obstacle_get_paused** **(** :ref:`RID` obstacle **)** |const| + +Returns ``true`` if the specified ``obstacle`` is paused. + +.. rst-class:: classref-item-separator + +---- + +.. _class_NavigationServer2D_method_obstacle_set_avoidance_enabled: + +.. rst-class:: classref-method + +void **obstacle_set_avoidance_enabled** **(** :ref:`RID` obstacle, :ref:`bool` enabled **)** + +If ``enabled`` the provided ``obstacle`` affects avoidance using agents. + +.. rst-class:: classref-item-separator + +---- + .. _class_NavigationServer2D_method_obstacle_set_avoidance_layers: .. rst-class:: classref-method void **obstacle_set_avoidance_layers** **(** :ref:`RID` obstacle, :ref:`int` layers **)** -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one `! +Set the obstacles's ``avoidance_layers`` bitmask. .. rst-class:: classref-item-separator @@ -1018,6 +1092,18 @@ Sets the navigation map :ref:`RID` for the obstacle. ---- +.. _class_NavigationServer2D_method_obstacle_set_paused: + +.. rst-class:: classref-method + +void **obstacle_set_paused** **(** :ref:`RID` obstacle, :ref:`bool` paused **)** + +If ``paused`` is true the specified ``obstacle`` will not be processed, e.g. affect avoidance velocities. + +.. rst-class:: classref-item-separator + +---- + .. _class_NavigationServer2D_method_obstacle_set_position: .. rst-class:: classref-method @@ -1030,6 +1116,30 @@ Sets the position of the obstacle in world space. ---- +.. _class_NavigationServer2D_method_obstacle_set_radius: + +.. rst-class:: classref-method + +void **obstacle_set_radius** **(** :ref:`RID` obstacle, :ref:`float` radius **)** + +Sets the radius of the dynamic obstacle. + +.. rst-class:: classref-item-separator + +---- + +.. _class_NavigationServer2D_method_obstacle_set_velocity: + +.. rst-class:: classref-method + +void **obstacle_set_velocity** **(** :ref:`RID` obstacle, :ref:`Vector2` velocity **)** + +Sets ``velocity`` of the dynamic ``obstacle``. Allows other agents to better predict the movement of the dynamic obstacle. Only works in combination with the radius of the obstacle. + +.. rst-class:: classref-item-separator + +---- + .. _class_NavigationServer2D_method_obstacle_set_vertices: .. rst-class:: classref-method @@ -1300,3 +1410,4 @@ If ``true`` enables debug mode on the NavigationServer. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_navigationserver3d.rst b/classes/class_navigationserver3d.rst index da06c78b050d..7908c93c71fc 100644 --- a/classes/class_navigationserver3d.rst +++ b/classes/class_navigationserver3d.rst @@ -52,199 +52,227 @@ Methods .. table:: :widths: auto - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`agent_create` **(** **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`agent_get_avoidance_enabled` **(** :ref:`RID` agent **)** |const| | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`agent_get_map` **(** :ref:`RID` agent **)** |const| | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`agent_get_use_3d_avoidance` **(** :ref:`RID` agent **)** |const| | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`agent_is_map_changed` **(** :ref:`RID` agent **)** |const| | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`agent_set_avoidance_callback` **(** :ref:`RID` agent, :ref:`Callable` callback **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`agent_set_avoidance_enabled` **(** :ref:`RID` agent, :ref:`bool` enabled **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`agent_set_avoidance_layers` **(** :ref:`RID` agent, :ref:`int` layers **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`agent_set_avoidance_mask` **(** :ref:`RID` agent, :ref:`int` mask **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`agent_set_avoidance_priority` **(** :ref:`RID` agent, :ref:`float` priority **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`agent_set_height` **(** :ref:`RID` agent, :ref:`float` height **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`agent_set_map` **(** :ref:`RID` agent, :ref:`RID` map **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`agent_set_max_neighbors` **(** :ref:`RID` agent, :ref:`int` count **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`agent_set_max_speed` **(** :ref:`RID` agent, :ref:`float` max_speed **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`agent_set_neighbor_distance` **(** :ref:`RID` agent, :ref:`float` distance **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`agent_set_position` **(** :ref:`RID` agent, :ref:`Vector3` position **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`agent_set_radius` **(** :ref:`RID` agent, :ref:`float` radius **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`agent_set_time_horizon_agents` **(** :ref:`RID` agent, :ref:`float` time_horizon **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`agent_set_time_horizon_obstacles` **(** :ref:`RID` agent, :ref:`float` time_horizon **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`agent_set_use_3d_avoidance` **(** :ref:`RID` agent, :ref:`bool` enabled **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`agent_set_velocity` **(** :ref:`RID` agent, :ref:`Vector3` velocity **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`agent_set_velocity_forced` **(** :ref:`RID` agent, :ref:`Vector3` velocity **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`free_rid` **(** :ref:`RID` rid **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`get_debug_enabled` **(** **)** |const| | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID[]` | :ref:`get_maps` **(** **)** |const| | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_process_info` **(** :ref:`ProcessInfo` process_info **)** |const| | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`link_create` **(** **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector3` | :ref:`link_get_end_position` **(** :ref:`RID` link **)** |const| | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`link_get_enter_cost` **(** :ref:`RID` link **)** |const| | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`link_get_map` **(** :ref:`RID` link **)** |const| | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`link_get_navigation_layers` **(** :ref:`RID` link **)** |const| | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`link_get_owner_id` **(** :ref:`RID` link **)** |const| | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector3` | :ref:`link_get_start_position` **(** :ref:`RID` link **)** |const| | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`link_get_travel_cost` **(** :ref:`RID` link **)** |const| | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`link_is_bidirectional` **(** :ref:`RID` link **)** |const| | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`link_set_bidirectional` **(** :ref:`RID` link, :ref:`bool` bidirectional **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`link_set_end_position` **(** :ref:`RID` link, :ref:`Vector3` position **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`link_set_enter_cost` **(** :ref:`RID` link, :ref:`float` enter_cost **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`link_set_map` **(** :ref:`RID` link, :ref:`RID` map **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`link_set_navigation_layers` **(** :ref:`RID` link, :ref:`int` navigation_layers **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`link_set_owner_id` **(** :ref:`RID` link, :ref:`int` owner_id **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`link_set_start_position` **(** :ref:`RID` link, :ref:`Vector3` position **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`link_set_travel_cost` **(** :ref:`RID` link, :ref:`float` travel_cost **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`map_create` **(** **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`map_force_update` **(** :ref:`RID` map **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID[]` | :ref:`map_get_agents` **(** :ref:`RID` map **)** |const| | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`map_get_cell_size` **(** :ref:`RID` map **)** |const| | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector3` | :ref:`map_get_closest_point` **(** :ref:`RID` map, :ref:`Vector3` to_point **)** |const| | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector3` | :ref:`map_get_closest_point_normal` **(** :ref:`RID` map, :ref:`Vector3` to_point **)** |const| | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`map_get_closest_point_owner` **(** :ref:`RID` map, :ref:`Vector3` to_point **)** |const| | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector3` | :ref:`map_get_closest_point_to_segment` **(** :ref:`RID` map, :ref:`Vector3` start, :ref:`Vector3` end, :ref:`bool` use_collision=false **)** |const| | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`map_get_edge_connection_margin` **(** :ref:`RID` map **)** |const| | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`map_get_link_connection_radius` **(** :ref:`RID` map **)** |const| | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID[]` | :ref:`map_get_links` **(** :ref:`RID` map **)** |const| | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID[]` | :ref:`map_get_obstacles` **(** :ref:`RID` map **)** |const| | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedVector3Array` | :ref:`map_get_path` **(** :ref:`RID` map, :ref:`Vector3` origin, :ref:`Vector3` destination, :ref:`bool` optimize, :ref:`int` navigation_layers=1 **)** |const| | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID[]` | :ref:`map_get_regions` **(** :ref:`RID` map **)** |const| | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector3` | :ref:`map_get_up` **(** :ref:`RID` map **)** |const| | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`map_get_use_edge_connections` **(** :ref:`RID` map **)** |const| | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`map_is_active` **(** :ref:`RID` map **)** |const| | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`map_set_active` **(** :ref:`RID` map, :ref:`bool` active **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`map_set_cell_size` **(** :ref:`RID` map, :ref:`float` cell_size **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`map_set_edge_connection_margin` **(** :ref:`RID` map, :ref:`float` margin **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`map_set_link_connection_radius` **(** :ref:`RID` map, :ref:`float` radius **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`map_set_up` **(** :ref:`RID` map, :ref:`Vector3` up **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`map_set_use_edge_connections` **(** :ref:`RID` map, :ref:`bool` enabled **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`obstacle_create` **(** **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`obstacle_get_map` **(** :ref:`RID` obstacle **)** |const| | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`obstacle_set_avoidance_layers` **(** :ref:`RID` obstacle, :ref:`int` layers **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`obstacle_set_height` **(** :ref:`RID` obstacle, :ref:`float` height **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`obstacle_set_map` **(** :ref:`RID` obstacle, :ref:`RID` map **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`obstacle_set_position` **(** :ref:`RID` obstacle, :ref:`Vector3` position **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`obstacle_set_vertices` **(** :ref:`RID` obstacle, :ref:`PackedVector3Array` vertices **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`query_path` **(** :ref:`NavigationPathQueryParameters3D` parameters, :ref:`NavigationPathQueryResult3D` result **)** |const| | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`region_bake_navigation_mesh` **(** :ref:`NavigationMesh` navigation_mesh, :ref:`Node` root_node **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`region_create` **(** **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector3` | :ref:`region_get_connection_pathway_end` **(** :ref:`RID` region, :ref:`int` connection **)** |const| | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector3` | :ref:`region_get_connection_pathway_start` **(** :ref:`RID` region, :ref:`int` connection **)** |const| | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`region_get_connections_count` **(** :ref:`RID` region **)** |const| | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`region_get_enter_cost` **(** :ref:`RID` region **)** |const| | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`region_get_map` **(** :ref:`RID` region **)** |const| | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`region_get_navigation_layers` **(** :ref:`RID` region **)** |const| | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`region_get_owner_id` **(** :ref:`RID` region **)** |const| | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`region_get_travel_cost` **(** :ref:`RID` region **)** |const| | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`region_get_use_edge_connections` **(** :ref:`RID` region **)** |const| | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`region_owns_point` **(** :ref:`RID` region, :ref:`Vector3` point **)** |const| | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`region_set_enter_cost` **(** :ref:`RID` region, :ref:`float` enter_cost **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`region_set_map` **(** :ref:`RID` region, :ref:`RID` map **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`region_set_navigation_layers` **(** :ref:`RID` region, :ref:`int` navigation_layers **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`region_set_navigation_mesh` **(** :ref:`RID` region, :ref:`NavigationMesh` navigation_mesh **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`region_set_owner_id` **(** :ref:`RID` region, :ref:`int` owner_id **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`region_set_transform` **(** :ref:`RID` region, :ref:`Transform3D` transform **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`region_set_travel_cost` **(** :ref:`RID` region, :ref:`float` travel_cost **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`region_set_use_edge_connections` **(** :ref:`RID` region, :ref:`bool` enabled **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`set_active` **(** :ref:`bool` active **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`set_debug_enabled` **(** :ref:`bool` enabled **)** | - +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`agent_create` **(** **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`agent_get_avoidance_enabled` **(** :ref:`RID` agent **)** |const| | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`agent_get_map` **(** :ref:`RID` agent **)** |const| | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`agent_get_paused` **(** :ref:`RID` agent **)** |const| | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`agent_get_use_3d_avoidance` **(** :ref:`RID` agent **)** |const| | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`agent_is_map_changed` **(** :ref:`RID` agent **)** |const| | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`agent_set_avoidance_callback` **(** :ref:`RID` agent, :ref:`Callable` callback **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`agent_set_avoidance_enabled` **(** :ref:`RID` agent, :ref:`bool` enabled **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`agent_set_avoidance_layers` **(** :ref:`RID` agent, :ref:`int` layers **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`agent_set_avoidance_mask` **(** :ref:`RID` agent, :ref:`int` mask **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`agent_set_avoidance_priority` **(** :ref:`RID` agent, :ref:`float` priority **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`agent_set_height` **(** :ref:`RID` agent, :ref:`float` height **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`agent_set_map` **(** :ref:`RID` agent, :ref:`RID` map **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`agent_set_max_neighbors` **(** :ref:`RID` agent, :ref:`int` count **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`agent_set_max_speed` **(** :ref:`RID` agent, :ref:`float` max_speed **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`agent_set_neighbor_distance` **(** :ref:`RID` agent, :ref:`float` distance **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`agent_set_paused` **(** :ref:`RID` agent, :ref:`bool` paused **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`agent_set_position` **(** :ref:`RID` agent, :ref:`Vector3` position **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`agent_set_radius` **(** :ref:`RID` agent, :ref:`float` radius **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`agent_set_time_horizon_agents` **(** :ref:`RID` agent, :ref:`float` time_horizon **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`agent_set_time_horizon_obstacles` **(** :ref:`RID` agent, :ref:`float` time_horizon **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`agent_set_use_3d_avoidance` **(** :ref:`RID` agent, :ref:`bool` enabled **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`agent_set_velocity` **(** :ref:`RID` agent, :ref:`Vector3` velocity **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`agent_set_velocity_forced` **(** :ref:`RID` agent, :ref:`Vector3` velocity **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`bake_from_source_geometry_data` **(** :ref:`NavigationMesh` navigation_mesh, :ref:`NavigationMeshSourceGeometryData3D` source_geometry_data, :ref:`Callable` callback **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`free_rid` **(** :ref:`RID` rid **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`get_debug_enabled` **(** **)** |const| | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID[]` | :ref:`get_maps` **(** **)** |const| | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_process_info` **(** :ref:`ProcessInfo` process_info **)** |const| | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`link_create` **(** **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector3` | :ref:`link_get_end_position` **(** :ref:`RID` link **)** |const| | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`link_get_enter_cost` **(** :ref:`RID` link **)** |const| | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`link_get_map` **(** :ref:`RID` link **)** |const| | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`link_get_navigation_layers` **(** :ref:`RID` link **)** |const| | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`link_get_owner_id` **(** :ref:`RID` link **)** |const| | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector3` | :ref:`link_get_start_position` **(** :ref:`RID` link **)** |const| | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`link_get_travel_cost` **(** :ref:`RID` link **)** |const| | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`link_is_bidirectional` **(** :ref:`RID` link **)** |const| | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`link_set_bidirectional` **(** :ref:`RID` link, :ref:`bool` bidirectional **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`link_set_end_position` **(** :ref:`RID` link, :ref:`Vector3` position **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`link_set_enter_cost` **(** :ref:`RID` link, :ref:`float` enter_cost **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`link_set_map` **(** :ref:`RID` link, :ref:`RID` map **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`link_set_navigation_layers` **(** :ref:`RID` link, :ref:`int` navigation_layers **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`link_set_owner_id` **(** :ref:`RID` link, :ref:`int` owner_id **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`link_set_start_position` **(** :ref:`RID` link, :ref:`Vector3` position **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`link_set_travel_cost` **(** :ref:`RID` link, :ref:`float` travel_cost **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`map_create` **(** **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`map_force_update` **(** :ref:`RID` map **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID[]` | :ref:`map_get_agents` **(** :ref:`RID` map **)** |const| | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`map_get_cell_height` **(** :ref:`RID` map **)** |const| | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`map_get_cell_size` **(** :ref:`RID` map **)** |const| | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector3` | :ref:`map_get_closest_point` **(** :ref:`RID` map, :ref:`Vector3` to_point **)** |const| | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector3` | :ref:`map_get_closest_point_normal` **(** :ref:`RID` map, :ref:`Vector3` to_point **)** |const| | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`map_get_closest_point_owner` **(** :ref:`RID` map, :ref:`Vector3` to_point **)** |const| | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector3` | :ref:`map_get_closest_point_to_segment` **(** :ref:`RID` map, :ref:`Vector3` start, :ref:`Vector3` end, :ref:`bool` use_collision=false **)** |const| | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`map_get_edge_connection_margin` **(** :ref:`RID` map **)** |const| | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`map_get_link_connection_radius` **(** :ref:`RID` map **)** |const| | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID[]` | :ref:`map_get_links` **(** :ref:`RID` map **)** |const| | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID[]` | :ref:`map_get_obstacles` **(** :ref:`RID` map **)** |const| | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedVector3Array` | :ref:`map_get_path` **(** :ref:`RID` map, :ref:`Vector3` origin, :ref:`Vector3` destination, :ref:`bool` optimize, :ref:`int` navigation_layers=1 **)** |const| | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID[]` | :ref:`map_get_regions` **(** :ref:`RID` map **)** |const| | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector3` | :ref:`map_get_up` **(** :ref:`RID` map **)** |const| | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`map_get_use_edge_connections` **(** :ref:`RID` map **)** |const| | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`map_is_active` **(** :ref:`RID` map **)** |const| | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`map_set_active` **(** :ref:`RID` map, :ref:`bool` active **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`map_set_cell_height` **(** :ref:`RID` map, :ref:`float` cell_height **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`map_set_cell_size` **(** :ref:`RID` map, :ref:`float` cell_size **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`map_set_edge_connection_margin` **(** :ref:`RID` map, :ref:`float` margin **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`map_set_link_connection_radius` **(** :ref:`RID` map, :ref:`float` radius **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`map_set_up` **(** :ref:`RID` map, :ref:`Vector3` up **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`map_set_use_edge_connections` **(** :ref:`RID` map, :ref:`bool` enabled **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`obstacle_create` **(** **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`obstacle_get_avoidance_enabled` **(** :ref:`RID` obstacle **)** |const| | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`obstacle_get_map` **(** :ref:`RID` obstacle **)** |const| | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`obstacle_get_paused` **(** :ref:`RID` obstacle **)** |const| | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`obstacle_get_use_3d_avoidance` **(** :ref:`RID` obstacle **)** |const| | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`obstacle_set_avoidance_enabled` **(** :ref:`RID` obstacle, :ref:`bool` enabled **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`obstacle_set_avoidance_layers` **(** :ref:`RID` obstacle, :ref:`int` layers **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`obstacle_set_height` **(** :ref:`RID` obstacle, :ref:`float` height **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`obstacle_set_map` **(** :ref:`RID` obstacle, :ref:`RID` map **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`obstacle_set_paused` **(** :ref:`RID` obstacle, :ref:`bool` paused **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`obstacle_set_position` **(** :ref:`RID` obstacle, :ref:`Vector3` position **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`obstacle_set_radius` **(** :ref:`RID` obstacle, :ref:`float` radius **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`obstacle_set_use_3d_avoidance` **(** :ref:`RID` obstacle, :ref:`bool` enabled **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`obstacle_set_velocity` **(** :ref:`RID` obstacle, :ref:`Vector3` velocity **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`obstacle_set_vertices` **(** :ref:`RID` obstacle, :ref:`PackedVector3Array` vertices **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`parse_source_geometry_data` **(** :ref:`NavigationMesh` navigation_mesh, :ref:`NavigationMeshSourceGeometryData3D` source_geometry_data, :ref:`Node` root_node, :ref:`Callable` callback **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`query_path` **(** :ref:`NavigationPathQueryParameters3D` parameters, :ref:`NavigationPathQueryResult3D` result **)** |const| | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`region_bake_navigation_mesh` **(** :ref:`NavigationMesh` navigation_mesh, :ref:`Node` root_node **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`region_create` **(** **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector3` | :ref:`region_get_connection_pathway_end` **(** :ref:`RID` region, :ref:`int` connection **)** |const| | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector3` | :ref:`region_get_connection_pathway_start` **(** :ref:`RID` region, :ref:`int` connection **)** |const| | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`region_get_connections_count` **(** :ref:`RID` region **)** |const| | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`region_get_enter_cost` **(** :ref:`RID` region **)** |const| | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`region_get_map` **(** :ref:`RID` region **)** |const| | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`region_get_navigation_layers` **(** :ref:`RID` region **)** |const| | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`region_get_owner_id` **(** :ref:`RID` region **)** |const| | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`region_get_travel_cost` **(** :ref:`RID` region **)** |const| | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`region_get_use_edge_connections` **(** :ref:`RID` region **)** |const| | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`region_owns_point` **(** :ref:`RID` region, :ref:`Vector3` point **)** |const| | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`region_set_enter_cost` **(** :ref:`RID` region, :ref:`float` enter_cost **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`region_set_map` **(** :ref:`RID` region, :ref:`RID` map **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`region_set_navigation_layers` **(** :ref:`RID` region, :ref:`int` navigation_layers **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`region_set_navigation_mesh` **(** :ref:`RID` region, :ref:`NavigationMesh` navigation_mesh **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`region_set_owner_id` **(** :ref:`RID` region, :ref:`int` owner_id **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`region_set_transform` **(** :ref:`RID` region, :ref:`Transform3D` transform **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`region_set_travel_cost` **(** :ref:`RID` region, :ref:`float` travel_cost **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`region_set_use_edge_connections` **(** :ref:`RID` region, :ref:`bool` enabled **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`set_active` **(** :ref:`bool` active **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`set_debug_enabled` **(** :ref:`bool` enabled **)** | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator @@ -419,6 +447,18 @@ Returns the navigation map :ref:`RID` the requested ``agent`` is curr ---- +.. _class_NavigationServer3D_method_agent_get_paused: + +.. rst-class:: classref-method + +:ref:`bool` **agent_get_paused** **(** :ref:`RID` agent **)** |const| + +Returns ``true`` if the specified ``agent`` is paused. + +.. rst-class:: classref-item-separator + +---- + .. _class_NavigationServer3D_method_agent_get_use_3d_avoidance: .. rst-class:: classref-method @@ -567,6 +607,18 @@ Sets the maximum distance to other agents this agent takes into account in the n ---- +.. _class_NavigationServer3D_method_agent_set_paused: + +.. rst-class:: classref-method + +void **agent_set_paused** **(** :ref:`RID` agent, :ref:`bool` paused **)** + +If ``paused`` is true the specified ``agent`` will not be processed, e.g. calculate avoidance velocities or receive avoidance callbacks. + +.. rst-class:: classref-item-separator + +---- + .. _class_NavigationServer3D_method_agent_set_position: .. rst-class:: classref-method @@ -637,7 +689,7 @@ If ``false`` the agent calculates avoidance velocities in 2D along the xz-axis i void **agent_set_velocity** **(** :ref:`RID` agent, :ref:`Vector3` velocity **)** -Sets ``velocity`` as the new wanted velocity for the specified ``agent``. The avoidance simulation will try to fulfil this velocity if possible but will modify it to avoid collision with other agent's and obstacles. When an agent is teleported to a new position use :ref:`agent_set_velocity_forced` as well to reset the internal simulation velocity. +Sets ``velocity`` as the new wanted velocity for the specified ``agent``. The avoidance simulation will try to fulfill this velocity if possible but will modify it to avoid collision with other agent's and obstacles. When an agent is teleported to a new position use :ref:`agent_set_velocity_forced` as well to reset the internal simulation velocity. .. rst-class:: classref-item-separator @@ -655,6 +707,18 @@ Replaces the internal velocity in the collision avoidance simulation with ``velo ---- +.. _class_NavigationServer3D_method_bake_from_source_geometry_data: + +.. rst-class:: classref-method + +void **bake_from_source_geometry_data** **(** :ref:`NavigationMesh` navigation_mesh, :ref:`NavigationMeshSourceGeometryData3D` source_geometry_data, :ref:`Callable` callback **)** + +Bakes the provided ``navigation_mesh`` with the data from the provided ``source_geometry_data``. After the process is finished the optional ``callback`` will be called. + +.. rst-class:: classref-item-separator + +---- + .. _class_NavigationServer3D_method_free_rid: .. rst-class:: classref-method @@ -949,13 +1013,25 @@ Returns all navigation agents :ref:`RID`\ s that are currently assign ---- +.. _class_NavigationServer3D_method_map_get_cell_height: + +.. rst-class:: classref-method + +:ref:`float` **map_get_cell_height** **(** :ref:`RID` map **)** |const| + +Returns the map cell height used to rasterize the navigation mesh vertices on the Y axis. + +.. rst-class:: classref-item-separator + +---- + .. _class_NavigationServer3D_method_map_get_cell_size: .. rst-class:: classref-method :ref:`float` **map_get_cell_size** **(** :ref:`RID` map **)** |const| -Returns the map cell size. +Returns the map cell size used to rasterize the navigation mesh vertices on the XZ plane. .. rst-class:: classref-item-separator @@ -1129,13 +1205,25 @@ Sets the map active. ---- +.. _class_NavigationServer3D_method_map_set_cell_height: + +.. rst-class:: classref-method + +void **map_set_cell_height** **(** :ref:`RID` map, :ref:`float` cell_height **)** + +Sets the map cell height used to rasterize the navigation mesh vertices on the Y axis. Must match with the cell height of the used navigation meshes. + +.. rst-class:: classref-item-separator + +---- + .. _class_NavigationServer3D_method_map_set_cell_size: .. rst-class:: classref-method void **map_set_cell_size** **(** :ref:`RID` map, :ref:`float` cell_size **)** -Set the map cell size used to weld the navigation mesh polygons. +Sets the map cell size used to rasterize the navigation mesh vertices on the XZ plane. Must match with the cell size of the used navigation meshes. .. rst-class:: classref-item-separator @@ -1201,6 +1289,18 @@ Creates a new obstacle. ---- +.. _class_NavigationServer3D_method_obstacle_get_avoidance_enabled: + +.. rst-class:: classref-method + +:ref:`bool` **obstacle_get_avoidance_enabled** **(** :ref:`RID` obstacle **)** |const| + +Returns ``true`` if the provided ``obstacle`` has avoidance enabled. + +.. rst-class:: classref-item-separator + +---- + .. _class_NavigationServer3D_method_obstacle_get_map: .. rst-class:: classref-method @@ -1213,6 +1313,42 @@ Returns the navigation map :ref:`RID` the requested ``obstacle`` is c ---- +.. _class_NavigationServer3D_method_obstacle_get_paused: + +.. rst-class:: classref-method + +:ref:`bool` **obstacle_get_paused** **(** :ref:`RID` obstacle **)** |const| + +Returns ``true`` if the specified ``obstacle`` is paused. + +.. rst-class:: classref-item-separator + +---- + +.. _class_NavigationServer3D_method_obstacle_get_use_3d_avoidance: + +.. rst-class:: classref-method + +:ref:`bool` **obstacle_get_use_3d_avoidance** **(** :ref:`RID` obstacle **)** |const| + +Returns ``true`` if the provided ``obstacle`` uses avoidance in 3D space Vector3(x,y,z) instead of horizontal 2D Vector2(x,y) / Vector3(x,0.0,z). + +.. rst-class:: classref-item-separator + +---- + +.. _class_NavigationServer3D_method_obstacle_set_avoidance_enabled: + +.. rst-class:: classref-method + +void **obstacle_set_avoidance_enabled** **(** :ref:`RID` obstacle, :ref:`bool` enabled **)** + +If ``enabled`` the provided ``obstacle`` affects avoidance using agents. + +.. rst-class:: classref-item-separator + +---- + .. _class_NavigationServer3D_method_obstacle_set_avoidance_layers: .. rst-class:: classref-method @@ -1249,6 +1385,18 @@ Assigns the ``obstacle`` to a navigation map. ---- +.. _class_NavigationServer3D_method_obstacle_set_paused: + +.. rst-class:: classref-method + +void **obstacle_set_paused** **(** :ref:`RID` obstacle, :ref:`bool` paused **)** + +If ``paused`` is true the specified ``obstacle`` will not be processed, e.g. affect avoidance velocities. + +.. rst-class:: classref-item-separator + +---- + .. _class_NavigationServer3D_method_obstacle_set_position: .. rst-class:: classref-method @@ -1261,6 +1409,42 @@ Updates the ``position`` in world space for the ``obstacle``. ---- +.. _class_NavigationServer3D_method_obstacle_set_radius: + +.. rst-class:: classref-method + +void **obstacle_set_radius** **(** :ref:`RID` obstacle, :ref:`float` radius **)** + +Sets the radius of the dynamic obstacle. + +.. rst-class:: classref-item-separator + +---- + +.. _class_NavigationServer3D_method_obstacle_set_use_3d_avoidance: + +.. rst-class:: classref-method + +void **obstacle_set_use_3d_avoidance** **(** :ref:`RID` obstacle, :ref:`bool` enabled **)** + +Sets if the ``obstacle`` uses the 2D avoidance or the 3D avoidance while avoidance is enabled. + +.. rst-class:: classref-item-separator + +---- + +.. _class_NavigationServer3D_method_obstacle_set_velocity: + +.. rst-class:: classref-method + +void **obstacle_set_velocity** **(** :ref:`RID` obstacle, :ref:`Vector3` velocity **)** + +Sets ``velocity`` of the dynamic ``obstacle``. Allows other agents to better predict the movement of the dynamic obstacle. Only works in combination with the radius of the obstacle. + +.. rst-class:: classref-item-separator + +---- + .. _class_NavigationServer3D_method_obstacle_set_vertices: .. rst-class:: classref-method @@ -1273,6 +1457,20 @@ Sets the outline vertices for the obstacle. If the vertices are winded in clockw ---- +.. _class_NavigationServer3D_method_parse_source_geometry_data: + +.. rst-class:: classref-method + +void **parse_source_geometry_data** **(** :ref:`NavigationMesh` navigation_mesh, :ref:`NavigationMeshSourceGeometryData3D` source_geometry_data, :ref:`Node` root_node, :ref:`Callable` callback **)** + +Parses the :ref:`SceneTree` for source geometry according to the properties of ``navigation_mesh``. Updates the provided ``source_geometry_data`` resource with the resulting data. The resource can then be used to bake a navigation mesh with :ref:`bake_from_source_geometry_data`. After the process is finished the optional ``callback`` will be called. + +\ **Note:** This function needs to run on the main thread or with a deferred call as the SceneTree is not thread-safe. + +.. rst-class:: classref-item-separator + +---- + .. _class_NavigationServer3D_method_query_path: .. rst-class:: classref-method @@ -1555,3 +1753,4 @@ If ``true`` enables debug mode on the NavigationServer. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_ninepatchrect.rst b/classes/class_ninepatchrect.rst index db396e1edab1..14219a4a5548 100644 --- a/classes/class_ninepatchrect.rst +++ b/classes/class_ninepatchrect.rst @@ -314,3 +314,4 @@ Sets the size of the margin on the specified :ref:`Side` .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_node.rst b/classes/class_node.rst index 0f65d8d41ae0..dae755129cf2 100644 --- a/classes/class_node.rst +++ b/classes/class_node.rst @@ -62,31 +62,31 @@ Properties .. table:: :widths: auto - +---------------------------------------------------------------+-----------------------------------------------------------------------------------+-----------+ - | :ref:`String` | :ref:`editor_description` | ``""`` | - +---------------------------------------------------------------+-----------------------------------------------------------------------------------+-----------+ - | :ref:`MultiplayerAPI` | :ref:`multiplayer` | | - +---------------------------------------------------------------+-----------------------------------------------------------------------------------+-----------+ - | :ref:`StringName` | :ref:`name` | | - +---------------------------------------------------------------+-----------------------------------------------------------------------------------+-----------+ - | :ref:`Node` | :ref:`owner` | | - +---------------------------------------------------------------+-----------------------------------------------------------------------------------+-----------+ - | :ref:`ProcessMode` | :ref:`process_mode` | ``0`` | - +---------------------------------------------------------------+-----------------------------------------------------------------------------------+-----------+ - | :ref:`int` | :ref:`process_physics_priority` | ``0`` | - +---------------------------------------------------------------+-----------------------------------------------------------------------------------+-----------+ - | :ref:`int` | :ref:`process_priority` | ``0`` | - +---------------------------------------------------------------+-----------------------------------------------------------------------------------+-----------+ - | :ref:`ProcessThreadGroup` | :ref:`process_thread_group` | ``0`` | - +---------------------------------------------------------------+-----------------------------------------------------------------------------------+-----------+ - | :ref:`int` | :ref:`process_thread_group_order` | | - +---------------------------------------------------------------+-----------------------------------------------------------------------------------+-----------+ - | :ref:`ProcessThreadMessages` | :ref:`process_thread_messages` | | - +---------------------------------------------------------------+-----------------------------------------------------------------------------------+-----------+ - | :ref:`String` | :ref:`scene_file_path` | | - +---------------------------------------------------------------+-----------------------------------------------------------------------------------+-----------+ - | :ref:`bool` | :ref:`unique_name_in_owner` | ``false`` | - +---------------------------------------------------------------+-----------------------------------------------------------------------------------+-----------+ + +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------+-----------+ + | :ref:`String` | :ref:`editor_description` | ``""`` | + +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------+-----------+ + | :ref:`MultiplayerAPI` | :ref:`multiplayer` | | + +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------+-----------+ + | :ref:`StringName` | :ref:`name` | | + +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------+-----------+ + | :ref:`Node` | :ref:`owner` | | + +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------+-----------+ + | :ref:`ProcessMode` | :ref:`process_mode` | ``0`` | + +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------+-----------+ + | :ref:`int` | :ref:`process_physics_priority` | ``0`` | + +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------+-----------+ + | :ref:`int` | :ref:`process_priority` | ``0`` | + +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------+-----------+ + | :ref:`ProcessThreadGroup` | :ref:`process_thread_group` | ``0`` | + +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------+-----------+ + | :ref:`int` | :ref:`process_thread_group_order` | | + +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------+-----------+ + | |bitfield|\<:ref:`ProcessThreadMessages`\> | :ref:`process_thread_messages` | | + +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------+-----------+ + | :ref:`String` | :ref:`scene_file_path` | | + +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------+-----------+ + | :ref:`bool` | :ref:`unique_name_in_owner` | ``false`` | + +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------+-----------+ .. rst-class:: classref-reftable-group @@ -351,6 +351,20 @@ Emitted when the node is renamed. ---- +.. _class_Node_signal_replacing_by: + +.. rst-class:: classref-signal + +**replacing_by** **(** :ref:`Node` node **)** + +Emitted when this node is being replaced by the ``node``, see :ref:`replace_by`. + +This signal is emitted *after* ``node`` has been added as a child of the original parent node, but *before* all original child nodes have been reparented to ``node``. + +.. rst-class:: classref-item-separator + +---- + .. _class_Node_signal_tree_entered: .. rst-class:: classref-signal @@ -484,7 +498,7 @@ Process this node (and children nodes set to inherit) on a sub-thread. See :ref: .. rst-class:: classref-enumeration -enum **ProcessThreadMessages**: +flags **ProcessThreadMessages**: .. _class_Node_constant_FLAG_PROCESS_THREAD_MESSAGES: @@ -819,7 +833,9 @@ Implemented on desktop and web platforms. **NOTIFICATION_WM_WINDOW_FOCUS_IN** = ``1004`` -Notification received from the OS when the node's parent :ref:`Window` is focused. This may be a change of focus between two windows of the same engine instance, or from the OS desktop or a third-party application to a window of the game (in which case :ref:`NOTIFICATION_APPLICATION_FOCUS_IN` is also emitted). +Notification received when the node's parent :ref:`Window` is focused. This may be a change of focus between two windows of the same engine instance, or from the OS desktop or a third-party application to a window of the game (in which case :ref:`NOTIFICATION_APPLICATION_FOCUS_IN` is also emitted). + +A :ref:`Window` node receives this notification when it is focused. .. _class_Node_constant_NOTIFICATION_WM_WINDOW_FOCUS_OUT: @@ -827,7 +843,9 @@ Notification received from the OS when the node's parent :ref:`Window` is defocused. This may be a change of focus between two windows of the same engine instance, or from a window of the game to the OS desktop or a third-party application (in which case :ref:`NOTIFICATION_APPLICATION_FOCUS_OUT` is also emitted). +Notification received when the node's parent :ref:`Window` is defocused. This may be a change of focus between two windows of the same engine instance, or from a window of the game to the OS desktop or a third-party application (in which case :ref:`NOTIFICATION_APPLICATION_FOCUS_OUT` is also emitted). + +A :ref:`Window` node receives this notification when it is defocused. .. _class_Node_constant_NOTIFICATION_WM_CLOSE_REQUEST: @@ -1119,11 +1137,11 @@ The node's priority in the execution order of the enabled processing callbacks ( - void **set_process_thread_group** **(** :ref:`ProcessThreadGroup` value **)** - :ref:`ProcessThreadGroup` **get_process_thread_group** **(** **)** -Set the process thread group for this node (basically, whether it receives :ref:`NOTIFICATION_PROCESS`, :ref:`NOTIFICATION_PHYSICS_PROCESS`, :ref:`_process` or :ref:`_physics_process` (and the internal versions) on the main thread or in a sub-thread. +Set the process thread group for this node (basically, whether it receives :ref:`NOTIFICATION_PROCESS`, :ref:`NOTIFICATION_PHYSICS_PROCESS`, :ref:`_process` or :ref:`_physics_process` (and the internal versions) on the main thread or in a sub-thread. By default, the thread group is :ref:`PROCESS_THREAD_GROUP_INHERIT`, which means that this node belongs to the same thread group as the parent node. The thread groups means that nodes in a specific thread group will process together, separate to other thread groups (depending on :ref:`process_thread_group_order`). If the value is set is :ref:`PROCESS_THREAD_GROUP_SUB_THREAD`, this thread group will occur on a sub thread (not the main thread), otherwise if set to :ref:`PROCESS_THREAD_GROUP_MAIN_THREAD` it will process on the main thread. If there is not a parent or grandparent node set to something other than inherit, the node will belong to the *default thread group*. This default group will process on the main thread and its group order is 0. -During processing in a sub-thread, accessing most functions in nodes outside the thread group is forbidden (and it will result in an error in debug mode). Use :ref:`Object.call_deferred`, :ref:`call_thread_safe`, :ref:`call_deferred_thread_group` and the likes in order to communicate from the thread groups to the main thread (or to other thread groups). +During processing in a sub-thread, accessing most functions in nodes outside the thread group is forbidden (and it will result in an error in debug mode). Use :ref:`Object.call_deferred`, :ref:`call_thread_safe`, :ref:`call_deferred_thread_group` and the likes in order to communicate from the thread groups to the main thread (or to other thread groups). To better understand process thread groups, the idea is that any node set to any other value than :ref:`PROCESS_THREAD_GROUP_INHERIT` will include any children (and grandchildren) nodes set to inherit into its process thread group. this means that the processing of all the nodes in the group will happen together, at the same time as the node including them. @@ -1152,12 +1170,12 @@ Change the process thread group order. Groups with a lesser order will process b .. rst-class:: classref-property -:ref:`ProcessThreadMessages` **process_thread_messages** +|bitfield|\<:ref:`ProcessThreadMessages`\> **process_thread_messages** .. rst-class:: classref-property-setget -- void **set_process_thread_messages** **(** :ref:`ProcessThreadMessages` value **)** -- :ref:`ProcessThreadMessages` **get_process_thread_messages** **(** **)** +- void **set_process_thread_messages** **(** |bitfield|\<:ref:`ProcessThreadMessages`\> value **)** +- |bitfield|\<:ref:`ProcessThreadMessages`\> **get_process_thread_messages** **(** **)** Set whether the current thread group will process messages (calls to :ref:`call_deferred_thread_group` on threads, and whether it wants to receive them during regular process or physics process callbacks. @@ -2301,6 +2319,8 @@ Queues a node for deletion at the end of the current frame. When deleted, all of It is safe to call :ref:`queue_free` multiple times per frame on a node, and to :ref:`Object.free` a node that is currently queued for deletion. Use :ref:`Object.is_queued_for_deletion` to check whether a node will be deleted at the end of the frame. +The node will only be freed after all other deferred calls are finished, so using :ref:`queue_free` is not always the same as calling :ref:`Object.free` through :ref:`Object.call_deferred`. + .. rst-class:: classref-item-separator ---- @@ -2401,7 +2421,7 @@ Changes the RPC mode for the given ``method`` with the given ``config`` which sh { rpc_mode = MultiplayerAPI.RPCMode, - transfer_mode = MultiplayerPeer.TranferMode, + transfer_mode = MultiplayerPeer.TransferMode, call_local = false, channel = 0, } @@ -2468,6 +2488,8 @@ void **set_multiplayer_authority** **(** :ref:`int` id, :ref:`bool` and the :ref:`MultiplayerAPI`. Inherited from the parent node by default, which ultimately defaults to peer ID 1 (the server). If ``recursive``, the given peer is recursively set as the authority for all children of this node. +\ **Warning:** This does **not** automatically replicate the new authority to other peers. It is developer's responsibility to do so. You can propagate the information about the new authority using :ref:`MultiplayerSpawner.spawn_function`, an RPC, or using a :ref:`MultiplayerSynchronizer`. + .. rst-class:: classref-item-separator ---- @@ -2612,3 +2634,4 @@ Use :ref:`_get_configuration_warnings`\ s attached to this node. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_node3dgizmo.rst b/classes/class_node3dgizmo.rst index 63480e950619..da8169470f2a 100644 --- a/classes/class_node3dgizmo.rst +++ b/classes/class_node3dgizmo.rst @@ -24,3 +24,4 @@ Node3DGizmo .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_nodepath.rst b/classes/class_nodepath.rst index 178935cd3466..4a570d232eaa 100644 --- a/classes/class_nodepath.rst +++ b/classes/class_nodepath.rst @@ -403,3 +403,4 @@ Returns ``true`` if two node paths are equal, i.e. all node names in the path ar .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_noise.rst b/classes/class_noise.rst index 467ed7075ccf..6db9c05109b5 100644 --- a/classes/class_noise.rst +++ b/classes/class_noise.rst @@ -182,3 +182,4 @@ Returns an :ref:`Array` of :ref:`Image`\ s containing .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_noisetexture2d.rst b/classes/class_noisetexture2d.rst index 96b822d39a4c..b07702845331 100644 --- a/classes/class_noisetexture2d.rst +++ b/classes/class_noisetexture2d.rst @@ -292,3 +292,4 @@ Width of the generated texture (in pixels). .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_noisetexture3d.rst b/classes/class_noisetexture3d.rst index ee6dd16257b6..69cffc5873f5 100644 --- a/classes/class_noisetexture3d.rst +++ b/classes/class_noisetexture3d.rst @@ -230,3 +230,4 @@ Width of the generated texture (in pixels). .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_object.rst b/classes/class_object.rst index da02dd9bb486..f432023454d7 100644 --- a/classes/class_object.rst +++ b/classes/class_object.rst @@ -228,7 +228,7 @@ enum **ConnectFlags**: :ref:`ConnectFlags` **CONNECT_DEFERRED** = ``1`` -Deferred connections trigger their :ref:`Callable`\ s on idle time, rather than instantly. +Deferred connections trigger their :ref:`Callable`\ s on idle time (at the end of the frame), rather than instantly. .. _class_Object_constant_CONNECT_PERSIST: @@ -669,7 +669,11 @@ Calls the ``method`` on the object and returns the result. This method supports :ref:`Variant` **call_deferred** **(** :ref:`StringName` method, ... **)** |vararg| -Calls the ``method`` on the object during idle time. This method supports a variable number of arguments, so parameters can be passed as a comma separated list. +Calls the ``method`` on the object during idle time. Always returns null, **not** the method's result. + +Idle time happens mainly at the end of process and physics frames. In it, deferred calls will be run until there are none left, which means you can defer calls from other deferred calls and they'll still be run in the current idle time cycle. If not done carefully, this can result in infinite recursion without causing a stack overflow, which will hang the game similarly to an infinite loop. + +This method supports a variable number of arguments, so parameters can be passed as a comma separated list. .. tabs:: @@ -686,8 +690,21 @@ Calls the ``method`` on the object during idle time. This method supports a vari +See also :ref:`Callable.call_deferred`. + \ **Note:** In C#, ``method`` must be in snake_case when referring to built-in Godot methods. Prefer using the names exposed in the ``MethodName`` class to avoid allocating a new :ref:`StringName` on each call. +\ **Note:** If you're looking to delay the function call by a frame, refer to the :ref:`SceneTree.process_frame` and :ref:`SceneTree.physics_frame` signals. + +:: + + var node = Node3D.new() + # Make a Callable and bind the arguments to the node's rotate() call. + var callable = node.rotate.bind(Vector3(1.0, 0.0, 0.0), 1.571) + # Connect the callable to the process_frame signal, so it gets called in the next process frame. + # CONNECT_ONE_SHOT makes sure it only gets called once instead of every frame. + get_tree().process_frame.connect(callable, CONNECT_ONE_SHOT) + .. rst-class:: classref-item-separator ---- @@ -1469,7 +1486,7 @@ If set to ``true``, the object becomes unable to emit signals. As such, :ref:`em void **set_deferred** **(** :ref:`StringName` property, :ref:`Variant` value **)** -Assigns ``value`` to the given ``property``, after the current frame's physics step. This is equivalent to calling :ref:`set` through :ref:`call_deferred`. +Assigns ``value`` to the given ``property``, at the end of the current frame. This is equivalent to calling :ref:`set` through :ref:`call_deferred`. .. tabs:: @@ -1631,3 +1648,4 @@ For detailed examples, see :doc:`Localization using gettext <../tutorials/i18n/l .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_occluder3d.rst b/classes/class_occluder3d.rst index 16f399b8582b..87313c3b87ea 100644 --- a/classes/class_occluder3d.rst +++ b/classes/class_occluder3d.rst @@ -74,3 +74,4 @@ Returns the occluder shape's vertex positions. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_occluderinstance3d.rst b/classes/class_occluderinstance3d.rst index c50fffa6e4dd..0538755b5911 100644 --- a/classes/class_occluderinstance3d.rst +++ b/classes/class_occluderinstance3d.rst @@ -162,3 +162,4 @@ Based on ``value``, enables or disables the specified layer in the :ref:`bake_ma .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_occluderpolygon2d.rst b/classes/class_occluderpolygon2d.rst index 69472117c507..cf390932c8a8 100644 --- a/classes/class_occluderpolygon2d.rst +++ b/classes/class_occluderpolygon2d.rst @@ -140,3 +140,4 @@ A :ref:`Vector2` array with the index for polygon's vertices posi .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_offlinemultiplayerpeer.rst b/classes/class_offlinemultiplayerpeer.rst index 3ff641ae3c29..1aa7b2c72ec8 100644 --- a/classes/class_offlinemultiplayerpeer.rst +++ b/classes/class_offlinemultiplayerpeer.rst @@ -29,3 +29,4 @@ This means that the :ref:`SceneTree` will act as the multiplaye .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_oggpacketsequence.rst b/classes/class_oggpacketsequence.rst index 65b2bc5de968..0daafa575306 100644 --- a/classes/class_oggpacketsequence.rst +++ b/classes/class_oggpacketsequence.rst @@ -128,3 +128,4 @@ The length of this stream, in seconds. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_oggpacketsequenceplayback.rst b/classes/class_oggpacketsequenceplayback.rst index 47d7e8887406..2c8b750f5376 100644 --- a/classes/class_oggpacketsequenceplayback.rst +++ b/classes/class_oggpacketsequenceplayback.rst @@ -22,3 +22,4 @@ OggPacketSequencePlayback .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_omnilight3d.rst b/classes/class_omnilight3d.rst index d7048f6c0959..8d17e42ae402 100644 --- a/classes/class_omnilight3d.rst +++ b/classes/class_omnilight3d.rst @@ -147,3 +147,4 @@ See :ref:`ShadowMode`. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_openxraction.rst b/classes/class_openxraction.rst index 54ad62752c49..13ca5faf08df 100644 --- a/classes/class_openxraction.rst +++ b/classes/class_openxraction.rst @@ -152,3 +152,4 @@ A collections of toplevel paths to which this action can be bound. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_openxractionmap.rst b/classes/class_openxractionmap.rst index ab282f1b45b7..94d3b968e3c1 100644 --- a/classes/class_openxractionmap.rst +++ b/classes/class_openxractionmap.rst @@ -253,3 +253,4 @@ Remove an interaction profile. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_openxractionset.rst b/classes/class_openxractionset.rst index 6916c38967ad..8e28559793e2 100644 --- a/classes/class_openxractionset.rst +++ b/classes/class_openxractionset.rst @@ -158,3 +158,4 @@ Remove an action from this action set. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_openxrhand.rst b/classes/class_openxrhand.rst index 7613e0f4d813..3c06b4f09117 100644 --- a/classes/class_openxrhand.rst +++ b/classes/class_openxrhand.rst @@ -172,3 +172,4 @@ Set the motion range (if supported) limiting the hand motion. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_openxrinteractionprofile.rst b/classes/class_openxrinteractionprofile.rst index 19673ef825a8..ffc8ec33003d 100644 --- a/classes/class_openxrinteractionprofile.rst +++ b/classes/class_openxrinteractionprofile.rst @@ -125,3 +125,4 @@ Get the number of bindings in this interaction profile. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_openxrinterface.rst b/classes/class_openxrinterface.rst index b8178cf599d8..78a6fff0170f 100644 --- a/classes/class_openxrinterface.rst +++ b/classes/class_openxrinterface.rst @@ -225,3 +225,4 @@ Sets the given action set as active or inactive. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_openxripbinding.rst b/classes/class_openxripbinding.rst index 820ed72e23ef..1a1385fb1be9 100644 --- a/classes/class_openxripbinding.rst +++ b/classes/class_openxripbinding.rst @@ -151,3 +151,4 @@ Removes this input/output path from this binding. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_optimizedtranslation.rst b/classes/class_optimizedtranslation.rst index 2de54cabe474..e404d60ac741 100644 --- a/classes/class_optimizedtranslation.rst +++ b/classes/class_optimizedtranslation.rst @@ -56,3 +56,4 @@ Generates and sets an optimized translation from the given :ref:`Translation` for the **OptionButton** (for right-to-l .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_ormmaterial3d.rst b/classes/class_ormmaterial3d.rst index 93104b9393be..87e804705d5e 100644 --- a/classes/class_ormmaterial3d.rst +++ b/classes/class_ormmaterial3d.rst @@ -34,3 +34,4 @@ Tutorials .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_os.rst b/classes/class_os.rst index b65d96a6aee0..00e1b832c831 100644 --- a/classes/class_os.rst +++ b/classes/class_os.rst @@ -1485,3 +1485,4 @@ Removes the environment ``variable`` from the current environment, if it exists. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_packedbytearray.rst b/classes/class_packedbytearray.rst index f616b62c8269..5266258bd9a9 100644 --- a/classes/class_packedbytearray.rst +++ b/classes/class_packedbytearray.rst @@ -1035,3 +1035,4 @@ Note that the byte is returned as a 64-bit :ref:`int`. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_packedcolorarray.rst b/classes/class_packedcolorarray.rst index c0ac209a6890..7881397151dc 100644 --- a/classes/class_packedcolorarray.rst +++ b/classes/class_packedcolorarray.rst @@ -142,6 +142,12 @@ Constructs a **PackedColorArray** as a copy of the given **PackedColorArray**. Constructs a new **PackedColorArray**. Optionally, you can pass in a generic :ref:`Array` that will be converted. +\ **Note:** When initializing a **PackedColorArray** with elements, it must be initialized with an :ref:`Array` of :ref:`Color` values: + +:: + + var array = PackedColorArray([Color(0.1, 0.2, 0.3), Color(0.4, 0.5, 0.6)]) + .. rst-class:: classref-section-separator ---- @@ -464,3 +470,4 @@ Returns the :ref:`Color` at index ``index``. Negative indices can b .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_packeddatacontainer.rst b/classes/class_packeddatacontainer.rst index 386b78932ea3..01c94c60695f 100644 --- a/classes/class_packeddatacontainer.rst +++ b/classes/class_packeddatacontainer.rst @@ -94,3 +94,4 @@ Returns the size of the packed container (see :ref:`Array.size` type is 64-bit, unlike the values stored in .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_packedfloat64array.rst b/classes/class_packedfloat64array.rst index c664b6326e8d..fc84071418c4 100644 --- a/classes/class_packedfloat64array.rst +++ b/classes/class_packedfloat64array.rst @@ -480,3 +480,4 @@ Returns the :ref:`float` at index ``index``. Negative indices can b .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_packedint32array.rst b/classes/class_packedint32array.rst index 5962bfc77ca4..ff23a9469a75 100644 --- a/classes/class_packedint32array.rst +++ b/classes/class_packedint32array.rst @@ -470,3 +470,4 @@ Note that :ref:`int` type is 64-bit, unlike the values stored in the .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_packedint64array.rst b/classes/class_packedint64array.rst index 7ce219733809..661cf110f61a 100644 --- a/classes/class_packedint64array.rst +++ b/classes/class_packedint64array.rst @@ -468,3 +468,4 @@ Returns the :ref:`int` at index ``index``. Negative indices can be us .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_packedscene.rst b/classes/class_packedscene.rst index fdc99d5c05d8..dee78eeaed3b 100644 --- a/classes/class_packedscene.rst +++ b/classes/class_packedscene.rst @@ -269,3 +269,4 @@ Pack will ignore any sub-nodes not owned by given node. See :ref:`Node.owner` at index ``index``. Negative indices can .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_packedvector2array.rst b/classes/class_packedvector2array.rst index 6e1a97932afb..eafef789637d 100644 --- a/classes/class_packedvector2array.rst +++ b/classes/class_packedvector2array.rst @@ -151,6 +151,12 @@ Constructs a **PackedVector2Array** as a copy of the given **PackedVector2Array* Constructs a new **PackedVector2Array**. Optionally, you can pass in a generic :ref:`Array` that will be converted. +\ **Note:** When initializing a **PackedVector2Array** with elements, it must be initialized with an :ref:`Array` of :ref:`Vector2` values: + +:: + + var array = PackedVector2Array([Vector2(12, 34), Vector2(56, 78)]) + .. rst-class:: classref-section-separator ---- @@ -497,3 +503,4 @@ Returns the :ref:`Vector2` at index ``index``. Negative indices c .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_packedvector3array.rst b/classes/class_packedvector3array.rst index e3831baade7d..098916a1c690 100644 --- a/classes/class_packedvector3array.rst +++ b/classes/class_packedvector3array.rst @@ -144,6 +144,12 @@ Constructs a **PackedVector3Array** as a copy of the given **PackedVector3Array* Constructs a new **PackedVector3Array**. Optionally, you can pass in a generic :ref:`Array` that will be converted. +\ **Note:** When initializing a **PackedVector3Array** with elements, it must be initialized with an :ref:`Array` of :ref:`Vector3` values: + +:: + + var array = PackedVector3Array([Vector3(12, 34, 56), Vector3(78, 90, 12)]) + .. rst-class:: classref-section-separator ---- @@ -490,3 +496,4 @@ Returns the :ref:`Vector3` at index ``index``. Negative indices c .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_packetpeer.rst b/classes/class_packetpeer.rst index e4b7e0ca62ec..6a883200da7c 100644 --- a/classes/class_packetpeer.rst +++ b/classes/class_packetpeer.rst @@ -172,3 +172,4 @@ Internally, this uses the same encoding mechanism as the :ref:`@GlobalScope.var_ .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_packetpeerdtls.rst b/classes/class_packetpeerdtls.rst index c8468c60884a..b9551d35313d 100644 --- a/classes/class_packetpeerdtls.rst +++ b/classes/class_packetpeerdtls.rst @@ -157,3 +157,4 @@ Poll the connection to check for incoming packets. Call this frequently to updat .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_packetpeerextension.rst b/classes/class_packetpeerextension.rst index 777ccc7bc36a..7b576b0caf2e 100644 --- a/classes/class_packetpeerextension.rst +++ b/classes/class_packetpeerextension.rst @@ -101,3 +101,4 @@ Method Descriptions .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_packetpeerstream.rst b/classes/class_packetpeerstream.rst index f64954672db4..1de903a9ccd5 100644 --- a/classes/class_packetpeerstream.rst +++ b/classes/class_packetpeerstream.rst @@ -105,3 +105,4 @@ The wrapped :ref:`StreamPeer` object. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_packetpeerudp.rst b/classes/class_packetpeerudp.rst index f2035033c1b6..08595acba545 100644 --- a/classes/class_packetpeerudp.rst +++ b/classes/class_packetpeerudp.rst @@ -279,3 +279,4 @@ Waits for a packet to arrive on the bound address. See :ref:`bind` of this control. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_panelcontainer.rst b/classes/class_panelcontainer.rst index 7580d8497849..67886a98cbb2 100644 --- a/classes/class_panelcontainer.rst +++ b/classes/class_panelcontainer.rst @@ -79,3 +79,4 @@ The style of **PanelContainer**'s background. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_panoramaskymaterial.rst b/classes/class_panoramaskymaterial.rst index e912440b70eb..b0c7d8769cab 100644 --- a/classes/class_panoramaskymaterial.rst +++ b/classes/class_panoramaskymaterial.rst @@ -84,3 +84,4 @@ A boolean value to determine if the background texture should be filtered or not .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_parallaxbackground.rst b/classes/class_parallaxbackground.rst index c248ae9fb328..fcab0d205bc7 100644 --- a/classes/class_parallaxbackground.rst +++ b/classes/class_parallaxbackground.rst @@ -160,3 +160,4 @@ The ParallaxBackground's scroll value. Calculated automatically when using a :re .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_parallaxlayer.rst b/classes/class_parallaxlayer.rst index f15cf55140b7..a6eb8324d19f 100644 --- a/classes/class_parallaxlayer.rst +++ b/classes/class_parallaxlayer.rst @@ -107,3 +107,4 @@ Multiplies the ParallaxLayer's motion. If an axis is set to ``0``, it will not s .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_particleprocessmaterial.rst b/classes/class_particleprocessmaterial.rst index 0fe7399a8571..26f468bf8b15 100644 --- a/classes/class_particleprocessmaterial.rst +++ b/classes/class_particleprocessmaterial.rst @@ -2033,3 +2033,4 @@ If ``true``, enables the specified particle flag. See :ref:`ParticleFlags` describing the path. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_path3d.rst b/classes/class_path3d.rst index 6cbe34526891..dd9b3e1e5b98 100644 --- a/classes/class_path3d.rst +++ b/classes/class_path3d.rst @@ -80,3 +80,4 @@ A :ref:`Curve3D` describing the path. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_pathfollow2d.rst b/classes/class_pathfollow2d.rst index 33bb434bb6c9..c6de58a0b897 100644 --- a/classes/class_pathfollow2d.rst +++ b/classes/class_pathfollow2d.rst @@ -181,3 +181,4 @@ The node's offset perpendicular to the curve. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_pathfollow3d.rst b/classes/class_pathfollow3d.rst index 02375ea90a19..2b8455ddf2d5 100644 --- a/classes/class_pathfollow3d.rst +++ b/classes/class_pathfollow3d.rst @@ -303,3 +303,4 @@ Correct the ``transform``. ``rotation_mode`` implicitly specifies how posture (f .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_pckpacker.rst b/classes/class_pckpacker.rst index 6ef0705b5ece..0b78762ad929 100644 --- a/classes/class_pckpacker.rst +++ b/classes/class_pckpacker.rst @@ -105,3 +105,4 @@ Creates a new PCK file with the name ``pck_name``. The ``.pck`` file extension i .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_performance.rst b/classes/class_performance.rst index fc0ba97c32b0..bf0f21d200a2 100644 --- a/classes/class_performance.rst +++ b/classes/class_performance.rst @@ -506,3 +506,4 @@ Removes the custom monitor with given ``id``. Prints an error if the given ``id` .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_physicalbone2d.rst b/classes/class_physicalbone2d.rst index 2d06ea329c08..ad8f7a67a3b2 100644 --- a/classes/class_physicalbone2d.rst +++ b/classes/class_physicalbone2d.rst @@ -186,3 +186,4 @@ Returns a boolean that indicates whether the **PhysicalBone2D** is running and s .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_physicalbone3d.rst b/classes/class_physicalbone3d.rst index 0154fd8f156d..a2a8288ba798 100644 --- a/classes/class_physicalbone3d.rst +++ b/classes/class_physicalbone3d.rst @@ -548,3 +548,4 @@ void **apply_impulse** **(** :ref:`Vector3` impulse, :ref:`Vector .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_physicalskymaterial.rst b/classes/class_physicalskymaterial.rst index 395255a49cdc..81dceddafb2e 100644 --- a/classes/class_physicalskymaterial.rst +++ b/classes/class_physicalskymaterial.rst @@ -255,3 +255,4 @@ If ``true``, enables debanding. Debanding adds a small amount of noise which hel .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_physicsbody2d.rst b/classes/class_physicsbody2d.rst index 672ab638a84e..96819b544eb2 100644 --- a/classes/class_physicsbody2d.rst +++ b/classes/class_physicsbody2d.rst @@ -149,3 +149,4 @@ If ``recovery_as_collision`` is ``true``, any depenetration from the recovery ph .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_physicsbody3d.rst b/classes/class_physicsbody3d.rst index ddabb7c157c7..d5e01a760662 100644 --- a/classes/class_physicsbody3d.rst +++ b/classes/class_physicsbody3d.rst @@ -300,3 +300,4 @@ If ``recovery_as_collision`` is ``true``, any depenetration from the recovery ph .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_physicsdirectbodystate2d.rst b/classes/class_physicsdirectbodystate2d.rst index fe8d243c35a4..1f8ef449f843 100644 --- a/classes/class_physicsdirectbodystate2d.rst +++ b/classes/class_physicsdirectbodystate2d.rst @@ -712,3 +712,4 @@ See :ref:`add_constant_torque` transform ** .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_physicsdirectbodystate3d.rst b/classes/class_physicsdirectbodystate3d.rst index 6b5461634dff..76b4414fec89 100644 --- a/classes/class_physicsdirectbodystate3d.rst +++ b/classes/class_physicsdirectbodystate3d.rst @@ -750,3 +750,4 @@ See :ref:`add_constant_torque` transform ** .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_physicsdirectspacestate2d.rst b/classes/class_physicsdirectspacestate2d.rst index 103369bf73c1..25f7b87d0b75 100644 --- a/classes/class_physicsdirectspacestate2d.rst +++ b/classes/class_physicsdirectspacestate2d.rst @@ -193,3 +193,4 @@ The number of intersections can be limited with the ``max_results`` parameter, t .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_physicsdirectspacestate2dextension.rst b/classes/class_physicsdirectspacestate2dextension.rst index 475dd506069b..bc92eca4836a 100644 --- a/classes/class_physicsdirectspacestate2dextension.rst +++ b/classes/class_physicsdirectspacestate2dextension.rst @@ -156,3 +156,4 @@ Method Descriptions .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_physicsdirectspacestate3d.rst b/classes/class_physicsdirectspacestate3d.rst index 934414404856..43a209d0fd68 100644 --- a/classes/class_physicsdirectspacestate3d.rst +++ b/classes/class_physicsdirectspacestate3d.rst @@ -197,3 +197,4 @@ The number of intersections can be limited with the ``max_results`` parameter, t .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_physicsdirectspacestate3dextension.rst b/classes/class_physicsdirectspacestate3dextension.rst index 798809f1c62d..0bdb05ebd1d2 100644 --- a/classes/class_physicsdirectspacestate3dextension.rst +++ b/classes/class_physicsdirectspacestate3dextension.rst @@ -172,3 +172,4 @@ Method Descriptions .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_physicsmaterial.rst b/classes/class_physicsmaterial.rst index 6aa9551634ed..9a13ede9df41 100644 --- a/classes/class_physicsmaterial.rst +++ b/classes/class_physicsmaterial.rst @@ -118,3 +118,4 @@ If ``true``, the physics engine will use the friction of the object marked as "r .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_physicspointqueryparameters2d.rst b/classes/class_physicspointqueryparameters2d.rst index bfacaeb13e58..c3376a8bf0bb 100644 --- a/classes/class_physicspointqueryparameters2d.rst +++ b/classes/class_physicspointqueryparameters2d.rst @@ -158,3 +158,4 @@ The position being queried for, in global coordinates. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_physicspointqueryparameters3d.rst b/classes/class_physicspointqueryparameters3d.rst index 9f13435133b0..13aa056a93b5 100644 --- a/classes/class_physicspointqueryparameters3d.rst +++ b/classes/class_physicspointqueryparameters3d.rst @@ -137,3 +137,4 @@ The position being queried for, in global coordinates. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_physicsrayqueryparameters2d.rst b/classes/class_physicsrayqueryparameters2d.rst index d4e51be24817..25bcc0d6a7f3 100644 --- a/classes/class_physicsrayqueryparameters2d.rst +++ b/classes/class_physicsrayqueryparameters2d.rst @@ -209,3 +209,4 @@ Returns a new, pre-configured **PhysicsRayQueryParameters2D** object. Use it to .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_physicsrayqueryparameters3d.rst b/classes/class_physicsrayqueryparameters3d.rst index eeb39440ecd0..7699e26c05ad 100644 --- a/classes/class_physicsrayqueryparameters3d.rst +++ b/classes/class_physicsrayqueryparameters3d.rst @@ -228,3 +228,4 @@ Returns a new, pre-configured **PhysicsRayQueryParameters3D** object. Use it to .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_physicsserver2d.rst b/classes/class_physicsserver2d.rst index 52a8a43e9b96..088b0a0ef298 100644 --- a/classes/class_physicsserver2d.rst +++ b/classes/class_physicsserver2d.rst @@ -45,239 +45,239 @@ Methods .. table:: :widths: auto - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`area_add_shape` **(** :ref:`RID` area, :ref:`RID` shape, :ref:`Transform2D` transform=Transform2D(1, 0, 0, 1, 0, 0), :ref:`bool` disabled=false **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`area_attach_canvas_instance_id` **(** :ref:`RID` area, :ref:`int` id **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`area_attach_object_instance_id` **(** :ref:`RID` area, :ref:`int` id **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`area_clear_shapes` **(** :ref:`RID` area **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`area_create` **(** **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`area_get_canvas_instance_id` **(** :ref:`RID` area **)** |const| | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`area_get_collision_layer` **(** :ref:`RID` area **)** |const| | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`area_get_collision_mask` **(** :ref:`RID` area **)** |const| | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`area_get_object_instance_id` **(** :ref:`RID` area **)** |const| | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Variant` | :ref:`area_get_param` **(** :ref:`RID` area, :ref:`AreaParameter` param **)** |const| | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`area_get_shape` **(** :ref:`RID` area, :ref:`int` shape_idx **)** |const| | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`area_get_shape_count` **(** :ref:`RID` area **)** |const| | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Transform2D` | :ref:`area_get_shape_transform` **(** :ref:`RID` area, :ref:`int` shape_idx **)** |const| | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`area_get_space` **(** :ref:`RID` area **)** |const| | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Transform2D` | :ref:`area_get_transform` **(** :ref:`RID` area **)** |const| | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`area_remove_shape` **(** :ref:`RID` area, :ref:`int` shape_idx **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`area_set_area_monitor_callback` **(** :ref:`RID` area, :ref:`Callable` callback **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`area_set_collision_layer` **(** :ref:`RID` area, :ref:`int` layer **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`area_set_collision_mask` **(** :ref:`RID` area, :ref:`int` mask **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`area_set_monitor_callback` **(** :ref:`RID` area, :ref:`Callable` callback **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`area_set_monitorable` **(** :ref:`RID` area, :ref:`bool` monitorable **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`area_set_param` **(** :ref:`RID` area, :ref:`AreaParameter` param, :ref:`Variant` value **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`area_set_shape` **(** :ref:`RID` area, :ref:`int` shape_idx, :ref:`RID` shape **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`area_set_shape_disabled` **(** :ref:`RID` area, :ref:`int` shape_idx, :ref:`bool` disabled **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`area_set_shape_transform` **(** :ref:`RID` area, :ref:`int` shape_idx, :ref:`Transform2D` transform **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`area_set_space` **(** :ref:`RID` area, :ref:`RID` space **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`area_set_transform` **(** :ref:`RID` area, :ref:`Transform2D` transform **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`body_add_collision_exception` **(** :ref:`RID` body, :ref:`RID` excepted_body **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`body_add_constant_central_force` **(** :ref:`RID` body, :ref:`Vector2` force **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`body_add_constant_force` **(** :ref:`RID` body, :ref:`Vector2` force, :ref:`Vector2` position=Vector2(0, 0) **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`body_add_constant_torque` **(** :ref:`RID` body, :ref:`float` torque **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`body_add_shape` **(** :ref:`RID` body, :ref:`RID` shape, :ref:`Transform2D` transform=Transform2D(1, 0, 0, 1, 0, 0), :ref:`bool` disabled=false **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`body_apply_central_force` **(** :ref:`RID` body, :ref:`Vector2` force **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`body_apply_central_impulse` **(** :ref:`RID` body, :ref:`Vector2` impulse **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`body_apply_force` **(** :ref:`RID` body, :ref:`Vector2` force, :ref:`Vector2` position=Vector2(0, 0) **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`body_apply_impulse` **(** :ref:`RID` body, :ref:`Vector2` impulse, :ref:`Vector2` position=Vector2(0, 0) **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`body_apply_torque` **(** :ref:`RID` body, :ref:`float` torque **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`body_apply_torque_impulse` **(** :ref:`RID` body, :ref:`float` impulse **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`body_attach_canvas_instance_id` **(** :ref:`RID` body, :ref:`int` id **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`body_attach_object_instance_id` **(** :ref:`RID` body, :ref:`int` id **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`body_clear_shapes` **(** :ref:`RID` body **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`body_create` **(** **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`body_get_canvas_instance_id` **(** :ref:`RID` body **)** |const| | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`body_get_collision_layer` **(** :ref:`RID` body **)** |const| | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`body_get_collision_mask` **(** :ref:`RID` body **)** |const| | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`body_get_collision_priority` **(** :ref:`RID` body **)** |const| | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`body_get_constant_force` **(** :ref:`RID` body **)** |const| | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`body_get_constant_torque` **(** :ref:`RID` body **)** |const| | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`CCDMode` | :ref:`body_get_continuous_collision_detection_mode` **(** :ref:`RID` body **)** |const| | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PhysicsDirectBodyState2D` | :ref:`body_get_direct_state` **(** :ref:`RID` body **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`body_get_max_contacts_reported` **(** :ref:`RID` body **)** |const| | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`BodyMode` | :ref:`body_get_mode` **(** :ref:`RID` body **)** |const| | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`body_get_object_instance_id` **(** :ref:`RID` body **)** |const| | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Variant` | :ref:`body_get_param` **(** :ref:`RID` body, :ref:`BodyParameter` param **)** |const| | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`body_get_shape` **(** :ref:`RID` body, :ref:`int` shape_idx **)** |const| | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`body_get_shape_count` **(** :ref:`RID` body **)** |const| | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Transform2D` | :ref:`body_get_shape_transform` **(** :ref:`RID` body, :ref:`int` shape_idx **)** |const| | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`body_get_space` **(** :ref:`RID` body **)** |const| | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Variant` | :ref:`body_get_state` **(** :ref:`RID` body, :ref:`BodyState` state **)** |const| | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`body_is_omitting_force_integration` **(** :ref:`RID` body **)** |const| | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`body_remove_collision_exception` **(** :ref:`RID` body, :ref:`RID` excepted_body **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`body_remove_shape` **(** :ref:`RID` body, :ref:`int` shape_idx **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`body_reset_mass_properties` **(** :ref:`RID` body **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`body_set_axis_velocity` **(** :ref:`RID` body, :ref:`Vector2` axis_velocity **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`body_set_collision_layer` **(** :ref:`RID` body, :ref:`int` layer **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`body_set_collision_mask` **(** :ref:`RID` body, :ref:`int` mask **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`body_set_collision_priority` **(** :ref:`RID` body, :ref:`float` priority **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`body_set_constant_force` **(** :ref:`RID` body, :ref:`Vector2` force **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`body_set_constant_torque` **(** :ref:`RID` body, :ref:`float` torque **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`body_set_continuous_collision_detection_mode` **(** :ref:`RID` body, :ref:`CCDMode` mode **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`body_set_force_integration_callback` **(** :ref:`RID` body, :ref:`Callable` callable, :ref:`Variant` userdata=null **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`body_set_max_contacts_reported` **(** :ref:`RID` body, :ref:`int` amount **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`body_set_mode` **(** :ref:`RID` body, :ref:`BodyMode` mode **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`body_set_omit_force_integration` **(** :ref:`RID` body, :ref:`bool` enable **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`body_set_param` **(** :ref:`RID` body, :ref:`BodyParameter` param, :ref:`Variant` value **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`body_set_shape` **(** :ref:`RID` body, :ref:`int` shape_idx, :ref:`RID` shape **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`body_set_shape_as_one_way_collision` **(** :ref:`RID` body, :ref:`int` shape_idx, :ref:`bool` enable, :ref:`float` margin **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`body_set_shape_disabled` **(** :ref:`RID` body, :ref:`int` shape_idx, :ref:`bool` disabled **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`body_set_shape_transform` **(** :ref:`RID` body, :ref:`int` shape_idx, :ref:`Transform2D` transform **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`body_set_space` **(** :ref:`RID` body, :ref:`RID` space **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`body_set_state` **(** :ref:`RID` body, :ref:`BodyState` state, :ref:`Variant` value **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`body_test_motion` **(** :ref:`RID` body, :ref:`PhysicsTestMotionParameters2D` parameters, :ref:`PhysicsTestMotionResult2D` result=null **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`capsule_shape_create` **(** **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`circle_shape_create` **(** **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`concave_polygon_shape_create` **(** **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`convex_polygon_shape_create` **(** **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`damped_spring_joint_get_param` **(** :ref:`RID` joint, :ref:`DampedSpringParam` param **)** |const| | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`damped_spring_joint_set_param` **(** :ref:`RID` joint, :ref:`DampedSpringParam` param, :ref:`float` value **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`free_rid` **(** :ref:`RID` rid **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_process_info` **(** :ref:`ProcessInfo` process_info **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`joint_clear` **(** :ref:`RID` joint **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`joint_create` **(** **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`joint_disable_collisions_between_bodies` **(** :ref:`RID` joint, :ref:`bool` disable **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`joint_get_param` **(** :ref:`RID` joint, :ref:`JointParam` param **)** |const| | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`JointType` | :ref:`joint_get_type` **(** :ref:`RID` joint **)** |const| | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`joint_is_disabled_collisions_between_bodies` **(** :ref:`RID` joint **)** |const| | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`joint_make_damped_spring` **(** :ref:`RID` joint, :ref:`Vector2` anchor_a, :ref:`Vector2` anchor_b, :ref:`RID` body_a, :ref:`RID` body_b **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`joint_make_groove` **(** :ref:`RID` joint, :ref:`Vector2` groove1_a, :ref:`Vector2` groove2_a, :ref:`Vector2` anchor_b, :ref:`RID` body_a, :ref:`RID` body_b **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`joint_make_pin` **(** :ref:`RID` joint, :ref:`Vector2` anchor, :ref:`RID` body_a, :ref:`RID` body_b **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`joint_set_param` **(** :ref:`RID` joint, :ref:`JointParam` param, :ref:`float` value **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`pin_joint_get_param` **(** :ref:`RID` joint, :ref:`PinJointParam` param **)** |const| | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`pin_joint_set_param` **(** :ref:`RID` joint, :ref:`PinJointParam` param, :ref:`float` value **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`rectangle_shape_create` **(** **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`segment_shape_create` **(** **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`separation_ray_shape_create` **(** **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`set_active` **(** :ref:`bool` active **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Variant` | :ref:`shape_get_data` **(** :ref:`RID` shape **)** |const| | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`ShapeType` | :ref:`shape_get_type` **(** :ref:`RID` shape **)** |const| | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`shape_set_data` **(** :ref:`RID` shape, :ref:`Variant` data **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`space_create` **(** **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PhysicsDirectSpaceState2D` | :ref:`space_get_direct_state` **(** :ref:`RID` space **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`space_get_param` **(** :ref:`RID` space, :ref:`SpaceParameter` param **)** |const| | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`space_is_active` **(** :ref:`RID` space **)** |const| | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`space_set_active` **(** :ref:`RID` space, :ref:`bool` active **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`space_set_param` **(** :ref:`RID` space, :ref:`SpaceParameter` param, :ref:`float` value **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`world_boundary_shape_create` **(** **)** | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`area_add_shape` **(** :ref:`RID` area, :ref:`RID` shape, :ref:`Transform2D` transform=Transform2D(1, 0, 0, 1, 0, 0), :ref:`bool` disabled=false **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`area_attach_canvas_instance_id` **(** :ref:`RID` area, :ref:`int` id **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`area_attach_object_instance_id` **(** :ref:`RID` area, :ref:`int` id **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`area_clear_shapes` **(** :ref:`RID` area **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`area_create` **(** **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`area_get_canvas_instance_id` **(** :ref:`RID` area **)** |const| | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`area_get_collision_layer` **(** :ref:`RID` area **)** |const| | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`area_get_collision_mask` **(** :ref:`RID` area **)** |const| | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`area_get_object_instance_id` **(** :ref:`RID` area **)** |const| | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Variant` | :ref:`area_get_param` **(** :ref:`RID` area, :ref:`AreaParameter` param **)** |const| | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`area_get_shape` **(** :ref:`RID` area, :ref:`int` shape_idx **)** |const| | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`area_get_shape_count` **(** :ref:`RID` area **)** |const| | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Transform2D` | :ref:`area_get_shape_transform` **(** :ref:`RID` area, :ref:`int` shape_idx **)** |const| | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`area_get_space` **(** :ref:`RID` area **)** |const| | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Transform2D` | :ref:`area_get_transform` **(** :ref:`RID` area **)** |const| | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`area_remove_shape` **(** :ref:`RID` area, :ref:`int` shape_idx **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`area_set_area_monitor_callback` **(** :ref:`RID` area, :ref:`Callable` callback **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`area_set_collision_layer` **(** :ref:`RID` area, :ref:`int` layer **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`area_set_collision_mask` **(** :ref:`RID` area, :ref:`int` mask **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`area_set_monitor_callback` **(** :ref:`RID` area, :ref:`Callable` callback **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`area_set_monitorable` **(** :ref:`RID` area, :ref:`bool` monitorable **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`area_set_param` **(** :ref:`RID` area, :ref:`AreaParameter` param, :ref:`Variant` value **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`area_set_shape` **(** :ref:`RID` area, :ref:`int` shape_idx, :ref:`RID` shape **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`area_set_shape_disabled` **(** :ref:`RID` area, :ref:`int` shape_idx, :ref:`bool` disabled **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`area_set_shape_transform` **(** :ref:`RID` area, :ref:`int` shape_idx, :ref:`Transform2D` transform **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`area_set_space` **(** :ref:`RID` area, :ref:`RID` space **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`area_set_transform` **(** :ref:`RID` area, :ref:`Transform2D` transform **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`body_add_collision_exception` **(** :ref:`RID` body, :ref:`RID` excepted_body **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`body_add_constant_central_force` **(** :ref:`RID` body, :ref:`Vector2` force **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`body_add_constant_force` **(** :ref:`RID` body, :ref:`Vector2` force, :ref:`Vector2` position=Vector2(0, 0) **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`body_add_constant_torque` **(** :ref:`RID` body, :ref:`float` torque **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`body_add_shape` **(** :ref:`RID` body, :ref:`RID` shape, :ref:`Transform2D` transform=Transform2D(1, 0, 0, 1, 0, 0), :ref:`bool` disabled=false **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`body_apply_central_force` **(** :ref:`RID` body, :ref:`Vector2` force **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`body_apply_central_impulse` **(** :ref:`RID` body, :ref:`Vector2` impulse **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`body_apply_force` **(** :ref:`RID` body, :ref:`Vector2` force, :ref:`Vector2` position=Vector2(0, 0) **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`body_apply_impulse` **(** :ref:`RID` body, :ref:`Vector2` impulse, :ref:`Vector2` position=Vector2(0, 0) **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`body_apply_torque` **(** :ref:`RID` body, :ref:`float` torque **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`body_apply_torque_impulse` **(** :ref:`RID` body, :ref:`float` impulse **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`body_attach_canvas_instance_id` **(** :ref:`RID` body, :ref:`int` id **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`body_attach_object_instance_id` **(** :ref:`RID` body, :ref:`int` id **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`body_clear_shapes` **(** :ref:`RID` body **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`body_create` **(** **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`body_get_canvas_instance_id` **(** :ref:`RID` body **)** |const| | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`body_get_collision_layer` **(** :ref:`RID` body **)** |const| | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`body_get_collision_mask` **(** :ref:`RID` body **)** |const| | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`body_get_collision_priority` **(** :ref:`RID` body **)** |const| | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`body_get_constant_force` **(** :ref:`RID` body **)** |const| | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`body_get_constant_torque` **(** :ref:`RID` body **)** |const| | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`CCDMode` | :ref:`body_get_continuous_collision_detection_mode` **(** :ref:`RID` body **)** |const| | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PhysicsDirectBodyState2D` | :ref:`body_get_direct_state` **(** :ref:`RID` body **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`body_get_max_contacts_reported` **(** :ref:`RID` body **)** |const| | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`BodyMode` | :ref:`body_get_mode` **(** :ref:`RID` body **)** |const| | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`body_get_object_instance_id` **(** :ref:`RID` body **)** |const| | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Variant` | :ref:`body_get_param` **(** :ref:`RID` body, :ref:`BodyParameter` param **)** |const| | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`body_get_shape` **(** :ref:`RID` body, :ref:`int` shape_idx **)** |const| | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`body_get_shape_count` **(** :ref:`RID` body **)** |const| | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Transform2D` | :ref:`body_get_shape_transform` **(** :ref:`RID` body, :ref:`int` shape_idx **)** |const| | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`body_get_space` **(** :ref:`RID` body **)** |const| | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Variant` | :ref:`body_get_state` **(** :ref:`RID` body, :ref:`BodyState` state **)** |const| | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`body_is_omitting_force_integration` **(** :ref:`RID` body **)** |const| | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`body_remove_collision_exception` **(** :ref:`RID` body, :ref:`RID` excepted_body **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`body_remove_shape` **(** :ref:`RID` body, :ref:`int` shape_idx **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`body_reset_mass_properties` **(** :ref:`RID` body **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`body_set_axis_velocity` **(** :ref:`RID` body, :ref:`Vector2` axis_velocity **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`body_set_collision_layer` **(** :ref:`RID` body, :ref:`int` layer **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`body_set_collision_mask` **(** :ref:`RID` body, :ref:`int` mask **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`body_set_collision_priority` **(** :ref:`RID` body, :ref:`float` priority **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`body_set_constant_force` **(** :ref:`RID` body, :ref:`Vector2` force **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`body_set_constant_torque` **(** :ref:`RID` body, :ref:`float` torque **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`body_set_continuous_collision_detection_mode` **(** :ref:`RID` body, :ref:`CCDMode` mode **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`body_set_force_integration_callback` **(** :ref:`RID` body, :ref:`Callable` callable, :ref:`Variant` userdata=null **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`body_set_max_contacts_reported` **(** :ref:`RID` body, :ref:`int` amount **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`body_set_mode` **(** :ref:`RID` body, :ref:`BodyMode` mode **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`body_set_omit_force_integration` **(** :ref:`RID` body, :ref:`bool` enable **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`body_set_param` **(** :ref:`RID` body, :ref:`BodyParameter` param, :ref:`Variant` value **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`body_set_shape` **(** :ref:`RID` body, :ref:`int` shape_idx, :ref:`RID` shape **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`body_set_shape_as_one_way_collision` **(** :ref:`RID` body, :ref:`int` shape_idx, :ref:`bool` enable, :ref:`float` margin **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`body_set_shape_disabled` **(** :ref:`RID` body, :ref:`int` shape_idx, :ref:`bool` disabled **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`body_set_shape_transform` **(** :ref:`RID` body, :ref:`int` shape_idx, :ref:`Transform2D` transform **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`body_set_space` **(** :ref:`RID` body, :ref:`RID` space **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`body_set_state` **(** :ref:`RID` body, :ref:`BodyState` state, :ref:`Variant` value **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`body_test_motion` **(** :ref:`RID` body, :ref:`PhysicsTestMotionParameters2D` parameters, :ref:`PhysicsTestMotionResult2D` result=null **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`capsule_shape_create` **(** **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`circle_shape_create` **(** **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`concave_polygon_shape_create` **(** **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`convex_polygon_shape_create` **(** **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`damped_spring_joint_get_param` **(** :ref:`RID` joint, :ref:`DampedSpringParam` param **)** |const| | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`damped_spring_joint_set_param` **(** :ref:`RID` joint, :ref:`DampedSpringParam` param, :ref:`float` value **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`free_rid` **(** :ref:`RID` rid **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_process_info` **(** :ref:`ProcessInfo` process_info **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`joint_clear` **(** :ref:`RID` joint **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`joint_create` **(** **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`joint_disable_collisions_between_bodies` **(** :ref:`RID` joint, :ref:`bool` disable **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`joint_get_param` **(** :ref:`RID` joint, :ref:`JointParam` param **)** |const| | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`JointType` | :ref:`joint_get_type` **(** :ref:`RID` joint **)** |const| | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`joint_is_disabled_collisions_between_bodies` **(** :ref:`RID` joint **)** |const| | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`joint_make_damped_spring` **(** :ref:`RID` joint, :ref:`Vector2` anchor_a, :ref:`Vector2` anchor_b, :ref:`RID` body_a, :ref:`RID` body_b=RID() **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`joint_make_groove` **(** :ref:`RID` joint, :ref:`Vector2` groove1_a, :ref:`Vector2` groove2_a, :ref:`Vector2` anchor_b, :ref:`RID` body_a=RID(), :ref:`RID` body_b=RID() **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`joint_make_pin` **(** :ref:`RID` joint, :ref:`Vector2` anchor, :ref:`RID` body_a, :ref:`RID` body_b=RID() **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`joint_set_param` **(** :ref:`RID` joint, :ref:`JointParam` param, :ref:`float` value **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`pin_joint_get_param` **(** :ref:`RID` joint, :ref:`PinJointParam` param **)** |const| | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`pin_joint_set_param` **(** :ref:`RID` joint, :ref:`PinJointParam` param, :ref:`float` value **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`rectangle_shape_create` **(** **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`segment_shape_create` **(** **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`separation_ray_shape_create` **(** **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`set_active` **(** :ref:`bool` active **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Variant` | :ref:`shape_get_data` **(** :ref:`RID` shape **)** |const| | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`ShapeType` | :ref:`shape_get_type` **(** :ref:`RID` shape **)** |const| | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`shape_set_data` **(** :ref:`RID` shape, :ref:`Variant` data **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`space_create` **(** **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PhysicsDirectSpaceState2D` | :ref:`space_get_direct_state` **(** :ref:`RID` space **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`space_get_param` **(** :ref:`RID` space, :ref:`SpaceParameter` param **)** |const| | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`space_is_active` **(** :ref:`RID` space **)** |const| | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`space_set_active` **(** :ref:`RID` space, :ref:`bool` active **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`space_set_param` **(** :ref:`RID` space, :ref:`SpaceParameter` param, :ref:`float` value **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`world_boundary_shape_create` **(** **)** | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator @@ -2273,7 +2273,7 @@ Returns whether the bodies attached to the :ref:`Joint2D` will co .. rst-class:: classref-method -void **joint_make_damped_spring** **(** :ref:`RID` joint, :ref:`Vector2` anchor_a, :ref:`Vector2` anchor_b, :ref:`RID` body_a, :ref:`RID` body_b **)** +void **joint_make_damped_spring** **(** :ref:`RID` joint, :ref:`Vector2` anchor_a, :ref:`Vector2` anchor_b, :ref:`RID` body_a, :ref:`RID` body_b=RID() **)** Makes the joint a damped spring joint, attached at the point ``anchor_a`` (given in global coordinates) on the body ``body_a`` and at the point ``anchor_b`` (given in global coordinates) on the body ``body_b``. To set the parameters which are specific to the damped spring, see :ref:`damped_spring_joint_set_param`. @@ -2285,7 +2285,7 @@ Makes the joint a damped spring joint, attached at the point ``anchor_a`` (given .. rst-class:: classref-method -void **joint_make_groove** **(** :ref:`RID` joint, :ref:`Vector2` groove1_a, :ref:`Vector2` groove2_a, :ref:`Vector2` anchor_b, :ref:`RID` body_a, :ref:`RID` body_b **)** +void **joint_make_groove** **(** :ref:`RID` joint, :ref:`Vector2` groove1_a, :ref:`Vector2` groove2_a, :ref:`Vector2` anchor_b, :ref:`RID` body_a=RID(), :ref:`RID` body_b=RID() **)** Makes the joint a groove joint. @@ -2297,7 +2297,7 @@ Makes the joint a groove joint. .. rst-class:: classref-method -void **joint_make_pin** **(** :ref:`RID` joint, :ref:`Vector2` anchor, :ref:`RID` body_a, :ref:`RID` body_b **)** +void **joint_make_pin** **(** :ref:`RID` joint, :ref:`Vector2` anchor, :ref:`RID` body_a, :ref:`RID` body_b=RID() **)** Makes the joint a pin joint. If ``body_b`` is ``RID()``, then ``body_a`` is pinned to the point ``anchor`` (given in global coordinates); otherwise, ``body_a`` is pinned to ``body_b`` at the point ``anchor`` (given in global coordinates). To set the parameters which are specific to the pin joint, see :ref:`pin_joint_set_param`. @@ -2529,3 +2529,4 @@ Creates a 2D world boundary shape in the physics server, and returns the :ref:`R .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_physicsserver2dextension.rst b/classes/class_physicsserver2dextension.rst index 75b4395386f0..de46c4f1b4fe 100644 --- a/classes/class_physicsserver2dextension.rst +++ b/classes/class_physicsserver2dextension.rst @@ -2252,3 +2252,4 @@ void **_sync** **(** **)** |virtual| .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_physicsserver2dmanager.rst b/classes/class_physicsserver2dmanager.rst index 1db965425842..2e640ef9e286 100644 --- a/classes/class_physicsserver2dmanager.rst +++ b/classes/class_physicsserver2dmanager.rst @@ -72,3 +72,4 @@ Set the default :ref:`PhysicsServer2D` implementation to .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_physicsserver3d.rst b/classes/class_physicsserver3d.rst index a485a09f0b69..5d1ea15698a4 100644 --- a/classes/class_physicsserver3d.rst +++ b/classes/class_physicsserver3d.rst @@ -3357,3 +3357,4 @@ Sets the value for a space parameter. A list of available parameters is on the : .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_physicsserver3dextension.rst b/classes/class_physicsserver3dextension.rst index 0b4858d87a2b..7327a8a70f03 100644 --- a/classes/class_physicsserver3dextension.rst +++ b/classes/class_physicsserver3dextension.rst @@ -3084,3 +3084,4 @@ void **_sync** **(** **)** |virtual| .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_physicsserver3dmanager.rst b/classes/class_physicsserver3dmanager.rst index 545377364c21..5f8e76585b2c 100644 --- a/classes/class_physicsserver3dmanager.rst +++ b/classes/class_physicsserver3dmanager.rst @@ -72,3 +72,4 @@ Set the default :ref:`PhysicsServer3D` implementation to .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_physicsserver3drenderingserverhandler.rst b/classes/class_physicsserver3drenderingserverhandler.rst index c054d1dccffc..2dd0506ee4ee 100644 --- a/classes/class_physicsserver3drenderingserverhandler.rst +++ b/classes/class_physicsserver3drenderingserverhandler.rst @@ -83,3 +83,4 @@ void **_set_vertex** **(** :ref:`int` vertex_id, const void* vertices .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_physicsshapequeryparameters2d.rst b/classes/class_physicsshapequeryparameters2d.rst index 49f820aa96a2..1b146102c784 100644 --- a/classes/class_physicsshapequeryparameters2d.rst +++ b/classes/class_physicsshapequeryparameters2d.rst @@ -44,7 +44,7 @@ Properties +---------------------------------------+----------------------------------------------------------------------------------------------+-----------------------------------+ | :ref:`Resource` | :ref:`shape` | | +---------------------------------------+----------------------------------------------------------------------------------------------+-----------------------------------+ - | :ref:`RID` | :ref:`shape_rid` | | + | :ref:`RID` | :ref:`shape_rid` | ``RID()`` | +---------------------------------------+----------------------------------------------------------------------------------------------+-----------------------------------+ | :ref:`Transform2D` | :ref:`transform` | ``Transform2D(1, 0, 0, 1, 0, 0)`` | +---------------------------------------+----------------------------------------------------------------------------------------------+-----------------------------------+ @@ -181,7 +181,7 @@ The :ref:`Shape2D` that will be used for collision/intersection q .. rst-class:: classref-property -:ref:`RID` **shape_rid** +:ref:`RID` **shape_rid** = ``RID()`` .. rst-class:: classref-property-setget @@ -246,3 +246,4 @@ The queried shape's transform matrix. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_physicsshapequeryparameters3d.rst b/classes/class_physicsshapequeryparameters3d.rst index d940f8ac551d..e78180dc9956 100644 --- a/classes/class_physicsshapequeryparameters3d.rst +++ b/classes/class_physicsshapequeryparameters3d.rst @@ -44,7 +44,7 @@ Properties +---------------------------------------+----------------------------------------------------------------------------------------------+-----------------------------------------------------+ | :ref:`Resource` | :ref:`shape` | | +---------------------------------------+----------------------------------------------------------------------------------------------+-----------------------------------------------------+ - | :ref:`RID` | :ref:`shape_rid` | | + | :ref:`RID` | :ref:`shape_rid` | ``RID()`` | +---------------------------------------+----------------------------------------------------------------------------------------------+-----------------------------------------------------+ | :ref:`Transform3D` | :ref:`transform` | ``Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)`` | +---------------------------------------+----------------------------------------------------------------------------------------------+-----------------------------------------------------+ @@ -181,7 +181,7 @@ The :ref:`Shape3D` that will be used for collision/intersection q .. rst-class:: classref-property -:ref:`RID` **shape_rid** +:ref:`RID` **shape_rid** = ``RID()`` .. rst-class:: classref-property-setget @@ -246,3 +246,4 @@ The queried shape's transform matrix. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_physicstestmotionparameters2d.rst b/classes/class_physicstestmotionparameters2d.rst index c1470dcff43e..be979a5cc985 100644 --- a/classes/class_physicstestmotionparameters2d.rst +++ b/classes/class_physicstestmotionparameters2d.rst @@ -179,3 +179,4 @@ If set to ``false``, only collisions resulting from the motion are reported, whi .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_physicstestmotionparameters3d.rst b/classes/class_physicstestmotionparameters3d.rst index b19e7c64c5a7..f3387458df88 100644 --- a/classes/class_physicstestmotionparameters3d.rst +++ b/classes/class_physicstestmotionparameters3d.rst @@ -198,3 +198,4 @@ If set to ``false``, only collisions resulting from the motion are reported, whi .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_physicstestmotionresult2d.rst b/classes/class_physicstestmotionresult2d.rst index ac70482497cf..aa08bf5e5df0 100644 --- a/classes/class_physicstestmotionresult2d.rst +++ b/classes/class_physicstestmotionresult2d.rst @@ -224,3 +224,4 @@ Returns the moving object's travel before collision. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_physicstestmotionresult3d.rst b/classes/class_physicstestmotionresult3d.rst index 37d1d069a7f3..ff85e51dfa6a 100644 --- a/classes/class_physicstestmotionresult3d.rst +++ b/classes/class_physicstestmotionresult3d.rst @@ -238,3 +238,4 @@ Returns the moving object's travel before collision. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_pinjoint2d.rst b/classes/class_pinjoint2d.rst index bcb84da9c253..33406a916ab2 100644 --- a/classes/class_pinjoint2d.rst +++ b/classes/class_pinjoint2d.rst @@ -61,3 +61,4 @@ The higher this value, the more the bond to the pinned partner can flex. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_pinjoint3d.rst b/classes/class_pinjoint3d.rst index cf8fee45471a..2dd6ced3659d 100644 --- a/classes/class_pinjoint3d.rst +++ b/classes/class_pinjoint3d.rst @@ -181,3 +181,4 @@ Sets the value of the specified parameter. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_placeholdercubemap.rst b/classes/class_placeholdercubemap.rst index e687597e1383..676ca21d6cdf 100644 --- a/classes/class_placeholdercubemap.rst +++ b/classes/class_placeholdercubemap.rst @@ -33,3 +33,4 @@ This class is used when loading a project that uses a :ref:`Cubemap` enclosing this mesh in local space. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_placeholdertexture2d.rst b/classes/class_placeholdertexture2d.rst index 28480e844a0b..0a6200b5eb57 100644 --- a/classes/class_placeholdertexture2d.rst +++ b/classes/class_placeholdertexture2d.rst @@ -69,3 +69,4 @@ The texture's size (in pixels). .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_placeholdertexture2darray.rst b/classes/class_placeholdertexture2darray.rst index f7c48c63b2ce..b4a2089227b7 100644 --- a/classes/class_placeholdertexture2darray.rst +++ b/classes/class_placeholdertexture2darray.rst @@ -33,3 +33,4 @@ This class is used when loading a project that uses a :ref:`Texture2D` **d** = ``0.0`` -The distance from the origin to the plane, in the direction of :ref:`normal`. This value is typically non-negative. +The distance from the origin to the plane, expressed in terms of :ref:`normal` (according to its direction and magnitude). Actual absolute distance from the origin to the plane can be calculated as ``abs(d) / normal.length()`` (if :ref:`normal` has zero length then this **Plane** does not represent a valid plane). In the scalar equation of the plane ``ax + by + cz = d``, this is ``d``, while the ``(a, b, c)`` coordinates are represented by the :ref:`normal` property. @@ -184,7 +184,7 @@ In the scalar equation of the plane ``ax + by + cz = d``, this is ``d``, while t :ref:`Vector3` **normal** = ``Vector3(0, 0, 0)`` -The normal of the plane, which must be a unit vector. +The normal of the plane, typically a unit vector. Shouldn't be a zero vector as **Plane** with such :ref:`normal` does not represent a valid plane. In the scalar equation of the plane ``ax + by + cz = d``, this is the vector ``(a, b, c)``, where ``d`` is the :ref:`d` property. @@ -430,7 +430,7 @@ Returns ``true`` if ``point`` is located above the plane. :ref:`Plane` **normalized** **(** **)** |const| -Returns a copy of the plane, normalized. +Returns a copy of the plane, with normalized :ref:`normal` (so it's a unit vector). Returns ``Plane(0, 0, 0, 0)`` if :ref:`normal` can't be normalized (it has zero length). .. rst-class:: classref-item-separator @@ -519,3 +519,4 @@ Returns the negative value of the **Plane**. This is the same as writing ``Plane .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_planemesh.rst b/classes/class_planemesh.rst index 8317612b2bc4..d03789737a17 100644 --- a/classes/class_planemesh.rst +++ b/classes/class_planemesh.rst @@ -180,3 +180,4 @@ Number of subdivision along the X axis. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_pointlight2d.rst b/classes/class_pointlight2d.rst index 5e3b4e91c2d2..023768730158 100644 --- a/classes/class_pointlight2d.rst +++ b/classes/class_pointlight2d.rst @@ -125,3 +125,4 @@ The :ref:`texture`'s scale factor. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_pointmesh.rst b/classes/class_pointmesh.rst index 9be5aa545185..c49ce21d134f 100644 --- a/classes/class_pointmesh.rst +++ b/classes/class_pointmesh.rst @@ -31,3 +31,4 @@ When using PointMeshes, properties that normally alter vertices will be ignored, .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_polygon2d.rst b/classes/class_polygon2d.rst index c125fa28cdb4..1344c10f94db 100644 --- a/classes/class_polygon2d.rst +++ b/classes/class_polygon2d.rst @@ -470,3 +470,4 @@ Sets the weight values for the specified bone. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_polygonoccluder3d.rst b/classes/class_polygonoccluder3d.rst index 9512fc643f41..d414744609f1 100644 --- a/classes/class_polygonoccluder3d.rst +++ b/classes/class_polygonoccluder3d.rst @@ -65,3 +65,4 @@ The polygon must *not* have intersecting lines. Otherwise, triangulation will fa .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_polygonpathfinder.rst b/classes/class_polygonpathfinder.rst index 24e694f3a202..950989059ccc 100644 --- a/classes/class_polygonpathfinder.rst +++ b/classes/class_polygonpathfinder.rst @@ -165,3 +165,4 @@ void **setup** **(** :ref:`PackedVector2Array` points, .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_popup.rst b/classes/class_popup.rst index a02a1f19740c..3861192d0182 100644 --- a/classes/class_popup.rst +++ b/classes/class_popup.rst @@ -68,3 +68,4 @@ Emitted when the popup is hidden. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_popupmenu.rst b/classes/class_popupmenu.rst index 2c7f2674a0c0..40dea72c7737 100644 --- a/classes/class_popupmenu.rst +++ b/classes/class_popupmenu.rst @@ -1665,3 +1665,4 @@ Default :ref:`StyleBox` of the **PopupMenu** items. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_popuppanel.rst b/classes/class_popuppanel.rst index f642f954380d..1b8147deaa48 100644 --- a/classes/class_popuppanel.rst +++ b/classes/class_popuppanel.rst @@ -56,3 +56,4 @@ The background panel style of this **PopupPanel**. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_portablecompressedtexture2d.rst b/classes/class_portablecompressedtexture2d.rst index 3cdea822c33b..95c9b903c233 100644 --- a/classes/class_portablecompressedtexture2d.rst +++ b/classes/class_portablecompressedtexture2d.rst @@ -260,3 +260,4 @@ Overrides the flag globally for all textures of this type. This is used primaril .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_primitivemesh.rst b/classes/class_primitivemesh.rst index 23b22a080d6b..e509ba185412 100644 --- a/classes/class_primitivemesh.rst +++ b/classes/class_primitivemesh.rst @@ -205,3 +205,4 @@ Returns mesh arrays used to constitute surface of :ref:`Mesh`. The r .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_prismmesh.rst b/classes/class_prismmesh.rst index b260d047a4f8..c1a8f2f276a2 100644 --- a/classes/class_prismmesh.rst +++ b/classes/class_prismmesh.rst @@ -137,3 +137,4 @@ Number of added edge loops along the X axis. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_proceduralskymaterial.rst b/classes/class_proceduralskymaterial.rst index 6af9112bfc9a..567f9576f262 100644 --- a/classes/class_proceduralskymaterial.rst +++ b/classes/class_proceduralskymaterial.rst @@ -293,3 +293,4 @@ If ``true``, enables debanding. Debanding adds a small amount of noise which hel .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_progressbar.rst b/classes/class_progressbar.rst index 21d7e9c190d5..0ae4e9b19036 100644 --- a/classes/class_progressbar.rst +++ b/classes/class_progressbar.rst @@ -256,3 +256,4 @@ The style of the progress (i.e. the part that fills the bar). .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_projection.rst b/classes/class_projection.rst index 40b30c4b18c6..ffed994780cd 100644 --- a/classes/class_projection.rst +++ b/classes/class_projection.rst @@ -726,3 +726,4 @@ Indices are in the following order: x, y, z, w. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_projectsettings.rst b/classes/class_projectsettings.rst index efbf4dd72640..f5ade681efa0 100644 --- a/classes/class_projectsettings.rst +++ b/classes/class_projectsettings.rst @@ -401,6 +401,8 @@ Properties +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`dotnet/project/assembly_name` | ``""`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`dotnet/project/assembly_reload_attempts` | ``3`` | + +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`dotnet/project/solution_directory` | ``""`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`editor/export/convert_text_resources_to_binary` | ``true`` | @@ -643,6 +645,8 @@ Properties +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`input_devices/buffering/agile_event_flushing` | ``false`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`input_devices/compatibility/legacy_just_pressed_behavior` | ``false`` | + +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`input_devices/pen_tablet/driver` | | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`input_devices/pen_tablet/driver.windows` | | @@ -1093,6 +1097,8 @@ Properties +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`navigation/2d/use_edge_connections` | ``true`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`navigation/3d/default_cell_height` | ``0.25`` | + +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | :ref:`float` | :ref:`navigation/3d/default_cell_size` | ``0.25`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | :ref:`float` | :ref:`navigation/3d/default_edge_connection_margin` | ``0.25`` | @@ -1287,6 +1293,8 @@ Properties +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`rendering/gl_compatibility/item_buffer_size` | ``16384`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`rendering/gl_compatibility/nvidia_disable_threaded_optimization` | ``true`` | + +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`rendering/global_illumination/gi/use_half_resolution` | ``false`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`rendering/global_illumination/sdfgi/frames_to_converge` | ``5`` | @@ -1467,7 +1475,7 @@ Properties +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`rendering/textures/vram_compression/import_etc2_astc` | ``false`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`rendering/textures/vram_compression/import_s3tc_bptc` | ``true`` | + | :ref:`bool` | :ref:`rendering/textures/vram_compression/import_s3tc_bptc` | ``false`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`rendering/textures/webp_compression/compression_method` | ``2`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ @@ -3787,6 +3795,18 @@ Name of the .NET assembly. This name is used as the name of the ``.csproj`` and ---- +.. _class_ProjectSettings_property_dotnet/project/assembly_reload_attempts: + +.. rst-class:: classref-property + +:ref:`int` **dotnet/project/assembly_reload_attempts** = ``3`` + +Number of times to attempt assembly reloading after rebuilding .NET assembies. Effectively also the timeout in seconds to wait for unloading of script assemblies to finish. + +.. rst-class:: classref-item-separator + +---- + .. _class_ProjectSettings_property_dotnet/project/solution_directory: .. rst-class:: classref-property @@ -5421,6 +5441,22 @@ Enabling this can greatly improve the responsiveness to input, specially in devi ---- +.. _class_ProjectSettings_property_input_devices/compatibility/legacy_just_pressed_behavior: + +.. rst-class:: classref-property + +:ref:`bool` **input_devices/compatibility/legacy_just_pressed_behavior** = ``false`` + +If ``true``, :ref:`Input.is_action_just_pressed` and :ref:`Input.is_action_just_released` will only return ``true`` if the action is still in the respective state, i.e. an action that is pressed *and* released on the same frame will be missed. + +If ``false``, no input will be lost. + +\ **Note:** You should in nearly all cases prefer the ``false`` setting. The legacy behavior is to enable supporting old projects that rely on the old logic, without changes to script. + +.. rst-class:: classref-item-separator + +---- + .. _class_ProjectSettings_property_input_devices/pen_tablet/driver: .. rst-class:: classref-property @@ -8135,6 +8171,18 @@ If enabled 2D navigation regions will use edge connections to connect with other ---- +.. _class_ProjectSettings_property_navigation/3d/default_cell_height: + +.. rst-class:: classref-property + +:ref:`float` **navigation/3d/default_cell_height** = ``0.25`` + +Default cell height for 3D navigation maps. See :ref:`NavigationServer3D.map_set_cell_height`. + +.. rst-class:: classref-item-separator + +---- + .. _class_ProjectSettings_property_navigation/3d/default_cell_size: .. rst-class:: classref-property @@ -9057,7 +9105,9 @@ If ``true``, performs a previous depth pass before rendering 3D materials. This :ref:`int` **rendering/driver/threads/thread_model** = ``1`` -Thread model for rendering. Rendering on a thread can vastly improve performance, but synchronizing to the main thread can cause a bit more jitter. +The thread model to use for rendering. Rendering on a thread may improve performance, but synchronizing to the main thread can cause a bit more jitter. + +\ **Note:** The **Multi-Threaded** option is experimental, and has several known bugs which can lead to crashing, especially when using particles or resizing the window. Not recommended for use in production at this stage. .. rst-class:: classref-item-separator @@ -9441,6 +9491,20 @@ Maximum number of canvas items commands that can be drawn in a single viewport u ---- +.. _class_ProjectSettings_property_rendering/gl_compatibility/nvidia_disable_threaded_optimization: + +.. rst-class:: classref-property + +:ref:`bool` **rendering/gl_compatibility/nvidia_disable_threaded_optimization** = ``true`` + +If ``true``, disables the threaded optimization feature from the NVIDIA drivers, which are known to cause stuttering in most OpenGL applications. + +\ **Note:** This setting only works on Windows, as threaded optimization is disabled by default on other platforms. + +.. rst-class:: classref-item-separator + +---- + .. _class_ProjectSettings_property_rendering/global_illumination/gi/use_half_resolution: .. rst-class:: classref-property @@ -10609,6 +10673,8 @@ If ``true``, the texture importer will import lossless textures using the PNG fo If ``true``, the texture importer will import VRAM-compressed textures using the Ericsson Texture Compression 2 algorithm for lower quality textures and normal maps and Adaptable Scalable Texture Compression algorithm for high quality textures (in 4x4 block size). +\ **Note:** This setting is an override. The texture importer will always import the format the host platform needs, even if this is set to ``false``. + \ **Note:** Changing this setting does *not* impact textures that were already imported before. To make this setting apply to textures that were already imported, exit the editor, remove the ``.godot/imported/`` folder located inside the project folder then restart the editor (see :ref:`application/config/use_hidden_project_data_directory`). .. rst-class:: classref-item-separator @@ -10619,10 +10685,12 @@ If ``true``, the texture importer will import VRAM-compressed textures using the .. rst-class:: classref-property -:ref:`bool` **rendering/textures/vram_compression/import_s3tc_bptc** = ``true`` +:ref:`bool` **rendering/textures/vram_compression/import_s3tc_bptc** = ``false`` If ``true``, the texture importer will import VRAM-compressed textures using the S3 Texture Compression algorithm (DXT1-5) for lower quality textures and the BPTC algorithm (BC6H and BC7) for high quality textures. This algorithm is only supported on PC desktop platforms and consoles. +\ **Note:** This setting is an override. The texture importer will always import the format the host platform needs, even if this is set to ``false``. + \ **Note:** Changing this setting does *not* impact textures that were already imported before. To make this setting apply to textures that were already imported, exit the editor, remove the ``.godot/imported/`` folder located inside the project folder then restart the editor (see :ref:`application/config/use_hidden_project_data_directory`). .. rst-class:: classref-item-separator @@ -11194,3 +11262,4 @@ This can also be used to erase custom project settings. To do this change the se .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_propertytweener.rst b/classes/class_propertytweener.rst index 20866c497a24..6c81c07ce640 100644 --- a/classes/class_propertytweener.rst +++ b/classes/class_propertytweener.rst @@ -147,3 +147,4 @@ Sets the type of used transition from :ref:`TransitionType` | :ref:`allow_greater` | ``false`` | - +------------------------------------------+----------------------------------------------------------+------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`allow_lesser` | ``false`` | - +------------------------------------------+----------------------------------------------------------+------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`exp_edit` | ``false`` | - +------------------------------------------+----------------------------------------------------------+------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`max_value` | ``100.0`` | - +------------------------------------------+----------------------------------------------------------+------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`min_value` | ``0.0`` | - +------------------------------------------+----------------------------------------------------------+------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`page` | ``0.0`` | - +------------------------------------------+----------------------------------------------------------+------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`ratio` | | - +------------------------------------------+----------------------------------------------------------+------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`rounded` | ``false`` | - +------------------------------------------+----------------------------------------------------------+------------------------------------------------------------------------------+ - | :ref:`SizeFlags` | size_flags_vertical | ``0`` (overrides :ref:`Control`) | - +------------------------------------------+----------------------------------------------------------+------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`step` | ``0.01`` | - +------------------------------------------+----------------------------------------------------------+------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`value` | ``0.0`` | - +------------------------------------------+----------------------------------------------------------+------------------------------------------------------------------------------+ + +--------------------------------------------------------+----------------------------------------------------------+------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`allow_greater` | ``false`` | + +--------------------------------------------------------+----------------------------------------------------------+------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`allow_lesser` | ``false`` | + +--------------------------------------------------------+----------------------------------------------------------+------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`exp_edit` | ``false`` | + +--------------------------------------------------------+----------------------------------------------------------+------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`max_value` | ``100.0`` | + +--------------------------------------------------------+----------------------------------------------------------+------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`min_value` | ``0.0`` | + +--------------------------------------------------------+----------------------------------------------------------+------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`page` | ``0.0`` | + +--------------------------------------------------------+----------------------------------------------------------+------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`ratio` | | + +--------------------------------------------------------+----------------------------------------------------------+------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`rounded` | ``false`` | + +--------------------------------------------------------+----------------------------------------------------------+------------------------------------------------------------------------------+ + | |bitfield|\<:ref:`SizeFlags`\> | size_flags_vertical | ``0`` (overrides :ref:`Control`) | + +--------------------------------------------------------+----------------------------------------------------------+------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`step` | ``0.01`` | + +--------------------------------------------------------+----------------------------------------------------------+------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`value` | ``0.0`` | + +--------------------------------------------------------+----------------------------------------------------------+------------------------------------------------------------------------------+ .. rst-class:: classref-reftable-group @@ -338,3 +338,4 @@ Stops the **Range** from sharing its member variables with any other. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_raycast2d.rst b/classes/class_raycast2d.rst index 44803310bfdd..878bd1d1823c 100644 --- a/classes/class_raycast2d.rst +++ b/classes/class_raycast2d.rst @@ -403,3 +403,4 @@ Based on ``value``, enables or disables the specified layer in the :ref:`collisi .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_raycast3d.rst b/classes/class_raycast3d.rst index e297c936356e..2437a48c4811 100644 --- a/classes/class_raycast3d.rst +++ b/classes/class_raycast3d.rst @@ -445,3 +445,4 @@ Based on ``value``, enables or disables the specified layer in the :ref:`collisi .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_rdattachmentformat.rst b/classes/class_rdattachmentformat.rst index 25ff27dd20b7..6b734ce01fcc 100644 --- a/classes/class_rdattachmentformat.rst +++ b/classes/class_rdattachmentformat.rst @@ -99,3 +99,4 @@ The attachment's usage flags, which determine what can be done with it. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_rdframebufferpass.rst b/classes/class_rdframebufferpass.rst index 0f5069cfc6ef..0ee84fb37477 100644 --- a/classes/class_rdframebufferpass.rst +++ b/classes/class_rdframebufferpass.rst @@ -158,3 +158,4 @@ If the color attachments are multisampled, non-multisampled resolve attachments .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_rdpipelinecolorblendstate.rst b/classes/class_rdpipelinecolorblendstate.rst index ad95aa94fc53..eba406bedbc9 100644 --- a/classes/class_rdpipelinecolorblendstate.rst +++ b/classes/class_rdpipelinecolorblendstate.rst @@ -118,3 +118,4 @@ The logic operation to perform for blending. Only effective if :ref:`enable_logi .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_rdpipelinecolorblendstateattachment.rst b/classes/class_rdpipelinecolorblendstateattachment.rst index d94b15983dec..7bcda5d0d44c 100644 --- a/classes/class_rdpipelinecolorblendstateattachment.rst +++ b/classes/class_rdpipelinecolorblendstateattachment.rst @@ -347,3 +347,4 @@ Convenience method to perform standard mix blending with straight (non-premultip .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_rdpipelinedepthstencilstate.rst b/classes/class_rdpipelinedepthstencilstate.rst index 223d67cd7562..1a4aa01071fd 100644 --- a/classes/class_rdpipelinedepthstencilstate.rst +++ b/classes/class_rdpipelinedepthstencilstate.rst @@ -481,3 +481,4 @@ If ``true``, enables depth testing which allows objects to be automatically occl .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_rdpipelinemultisamplestate.rst b/classes/class_rdpipelinemultisamplestate.rst index 11347140ccd6..52e33120ec83 100644 --- a/classes/class_rdpipelinemultisamplestate.rst +++ b/classes/class_rdpipelinemultisamplestate.rst @@ -156,3 +156,4 @@ The sampleSee the `sample mask Vulkan documentation `, :ref:`int` | :ref:`array_layers` | ``1`` | - +----------------------------------------------------------------+------------------------------------------------------------------+-------+ - | :ref:`int` | :ref:`depth` | ``1`` | - +----------------------------------------------------------------+------------------------------------------------------------------+-------+ - | :ref:`DataFormat` | :ref:`format` | ``8`` | - +----------------------------------------------------------------+------------------------------------------------------------------+-------+ - | :ref:`int` | :ref:`height` | ``1`` | - +----------------------------------------------------------------+------------------------------------------------------------------+-------+ - | :ref:`int` | :ref:`mipmaps` | ``1`` | - +----------------------------------------------------------------+------------------------------------------------------------------+-------+ - | :ref:`TextureSamples` | :ref:`samples` | ``0`` | - +----------------------------------------------------------------+------------------------------------------------------------------+-------+ - | :ref:`TextureType` | :ref:`texture_type` | ``1`` | - +----------------------------------------------------------------+------------------------------------------------------------------+-------+ - | :ref:`TextureUsageBits` | :ref:`usage_bits` | ``0`` | - +----------------------------------------------------------------+------------------------------------------------------------------+-------+ - | :ref:`int` | :ref:`width` | ``1`` | - +----------------------------------------------------------------+------------------------------------------------------------------+-------+ + +------------------------------------------------------------------------------+------------------------------------------------------------------+-------+ + | :ref:`int` | :ref:`array_layers` | ``1`` | + +------------------------------------------------------------------------------+------------------------------------------------------------------+-------+ + | :ref:`int` | :ref:`depth` | ``1`` | + +------------------------------------------------------------------------------+------------------------------------------------------------------+-------+ + | :ref:`DataFormat` | :ref:`format` | ``8`` | + +------------------------------------------------------------------------------+------------------------------------------------------------------+-------+ + | :ref:`int` | :ref:`height` | ``1`` | + +------------------------------------------------------------------------------+------------------------------------------------------------------+-------+ + | :ref:`int` | :ref:`mipmaps` | ``1`` | + +------------------------------------------------------------------------------+------------------------------------------------------------------+-------+ + | :ref:`TextureSamples` | :ref:`samples` | ``0`` | + +------------------------------------------------------------------------------+------------------------------------------------------------------+-------+ + | :ref:`TextureType` | :ref:`texture_type` | ``1`` | + +------------------------------------------------------------------------------+------------------------------------------------------------------+-------+ + | |bitfield|\<:ref:`TextureUsageBits`\> | :ref:`usage_bits` | ``0`` | + +------------------------------------------------------------------------------+------------------------------------------------------------------+-------+ + | :ref:`int` | :ref:`width` | ``1`` | + +------------------------------------------------------------------------------+------------------------------------------------------------------+-------+ .. rst-class:: classref-reftable-group @@ -195,12 +195,12 @@ The texture type. .. rst-class:: classref-property -:ref:`TextureUsageBits` **usage_bits** = ``0`` +|bitfield|\<:ref:`TextureUsageBits`\> **usage_bits** = ``0`` .. rst-class:: classref-property-setget -- void **set_usage_bits** **(** :ref:`TextureUsageBits` value **)** -- :ref:`TextureUsageBits` **get_usage_bits** **(** **)** +- void **set_usage_bits** **(** |bitfield|\<:ref:`TextureUsageBits`\> value **)** +- |bitfield|\<:ref:`TextureUsageBits`\> **get_usage_bits** **(** **)** The texture's usage bits, which determine what can be done using the texture. @@ -260,3 +260,4 @@ void **remove_shareable_format** **(** :ref:`DataFormat` **(** :ref:`BarrierMask` from=7, :ref:`BarrierMask` to=7 **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Error` | :ref:`buffer_clear` **(** :ref:`RID` buffer, :ref:`int` offset, :ref:`int` size_bytes, :ref:`BarrierMask` post_barrier=7 **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedByteArray` | :ref:`buffer_get_data` **(** :ref:`RID` buffer, :ref:`int` offset_bytes=0, :ref:`int` size_bytes=0 **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Error` | :ref:`buffer_update` **(** :ref:`RID` buffer, :ref:`int` offset, :ref:`int` size_bytes, :ref:`PackedByteArray` data, :ref:`BarrierMask` post_barrier=7 **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`capture_timestamp` **(** :ref:`String` name **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`compute_list_add_barrier` **(** :ref:`int` compute_list **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`compute_list_begin` **(** :ref:`bool` allow_draw_overlap=false **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`compute_list_bind_compute_pipeline` **(** :ref:`int` compute_list, :ref:`RID` compute_pipeline **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`compute_list_bind_uniform_set` **(** :ref:`int` compute_list, :ref:`RID` uniform_set, :ref:`int` set_index **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`compute_list_dispatch` **(** :ref:`int` compute_list, :ref:`int` x_groups, :ref:`int` y_groups, :ref:`int` z_groups **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`compute_list_end` **(** :ref:`BarrierMask` post_barrier=7 **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`compute_list_set_push_constant` **(** :ref:`int` compute_list, :ref:`PackedByteArray` buffer, :ref:`int` size_bytes **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`compute_pipeline_create` **(** :ref:`RID` shader, :ref:`RDPipelineSpecializationConstant[]` specialization_constants=[] **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`compute_pipeline_is_valid` **(** :ref:`RID` compute_pipeline **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RenderingDevice` | :ref:`create_local_device` **(** **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`draw_command_begin_label` **(** :ref:`String` name, :ref:`Color` color **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`draw_command_end_label` **(** **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`draw_command_insert_label` **(** :ref:`String` name, :ref:`Color` color **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`draw_list_begin` **(** :ref:`RID` framebuffer, :ref:`InitialAction` initial_color_action, :ref:`FinalAction` final_color_action, :ref:`InitialAction` initial_depth_action, :ref:`FinalAction` final_depth_action, :ref:`PackedColorArray` clear_color_values=PackedColorArray(), :ref:`float` clear_depth=1.0, :ref:`int` clear_stencil=0, :ref:`Rect2` region=Rect2(0, 0, 0, 0), :ref:`RID[]` storage_textures=[] **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`draw_list_begin_for_screen` **(** :ref:`int` screen=0, :ref:`Color` clear_color=Color(0, 0, 0, 1) **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedInt64Array` | :ref:`draw_list_begin_split` **(** :ref:`RID` framebuffer, :ref:`int` splits, :ref:`InitialAction` initial_color_action, :ref:`FinalAction` final_color_action, :ref:`InitialAction` initial_depth_action, :ref:`FinalAction` final_depth_action, :ref:`PackedColorArray` clear_color_values=PackedColorArray(), :ref:`float` clear_depth=1.0, :ref:`int` clear_stencil=0, :ref:`Rect2` region=Rect2(0, 0, 0, 0), :ref:`RID[]` storage_textures=[] **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`draw_list_bind_index_array` **(** :ref:`int` draw_list, :ref:`RID` index_array **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`draw_list_bind_render_pipeline` **(** :ref:`int` draw_list, :ref:`RID` render_pipeline **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`draw_list_bind_uniform_set` **(** :ref:`int` draw_list, :ref:`RID` uniform_set, :ref:`int` set_index **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`draw_list_bind_vertex_array` **(** :ref:`int` draw_list, :ref:`RID` vertex_array **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`draw_list_disable_scissor` **(** :ref:`int` draw_list **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`draw_list_draw` **(** :ref:`int` draw_list, :ref:`bool` use_indices, :ref:`int` instances, :ref:`int` procedural_vertex_count=0 **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`draw_list_enable_scissor` **(** :ref:`int` draw_list, :ref:`Rect2` rect=Rect2(0, 0, 0, 0) **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`draw_list_end` **(** :ref:`BarrierMask` post_barrier=7 **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`draw_list_set_blend_constants` **(** :ref:`int` draw_list, :ref:`Color` color **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`draw_list_set_push_constant` **(** :ref:`int` draw_list, :ref:`PackedByteArray` buffer, :ref:`int` size_bytes **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`draw_list_switch_to_next_pass` **(** **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedInt64Array` | :ref:`draw_list_switch_to_next_pass_split` **(** :ref:`int` splits **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`framebuffer_create` **(** :ref:`RID[]` textures, :ref:`int` validate_with_format=-1, :ref:`int` view_count=1 **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`framebuffer_create_empty` **(** :ref:`Vector2i` size, :ref:`TextureSamples` samples=0, :ref:`int` validate_with_format=-1 **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`framebuffer_create_multipass` **(** :ref:`RID[]` textures, :ref:`RDFramebufferPass[]` passes, :ref:`int` validate_with_format=-1, :ref:`int` view_count=1 **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`framebuffer_format_create` **(** :ref:`RDAttachmentFormat[]` attachments, :ref:`int` view_count=1 **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`framebuffer_format_create_empty` **(** :ref:`TextureSamples` samples=0 **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`framebuffer_format_create_multipass` **(** :ref:`RDAttachmentFormat[]` attachments, :ref:`RDFramebufferPass[]` passes, :ref:`int` view_count=1 **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`TextureSamples` | :ref:`framebuffer_format_get_texture_samples` **(** :ref:`int` format, :ref:`int` render_pass=0 **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`framebuffer_get_format` **(** :ref:`RID` framebuffer **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`framebuffer_is_valid` **(** :ref:`RID` framebuffer **)** |const| | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`free_rid` **(** :ref:`RID` rid **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`full_barrier` **(** **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_captured_timestamp_cpu_time` **(** :ref:`int` index **)** |const| | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_captured_timestamp_gpu_time` **(** :ref:`int` index **)** |const| | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`get_captured_timestamp_name` **(** :ref:`int` index **)** |const| | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_captured_timestamps_count` **(** **)** |const| | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_captured_timestamps_frame` **(** **)** |const| | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`get_device_name` **(** **)** |const| | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`get_device_pipeline_cache_uuid` **(** **)** |const| | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`get_device_vendor_name` **(** **)** |const| | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_driver_resource` **(** :ref:`DriverResource` resource, :ref:`RID` rid, :ref:`int` index **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_frame_delay` **(** **)** |const| | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_memory_usage` **(** :ref:`MemoryType` type **)** |const| | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`index_array_create` **(** :ref:`RID` index_buffer, :ref:`int` index_offset, :ref:`int` index_count **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`index_buffer_create` **(** :ref:`int` size_indices, :ref:`IndexBufferFormat` format, :ref:`PackedByteArray` data=PackedByteArray(), :ref:`bool` use_restart_indices=false **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`limit_get` **(** :ref:`Limit` limit **)** |const| | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`render_pipeline_create` **(** :ref:`RID` shader, :ref:`int` framebuffer_format, :ref:`int` vertex_format, :ref:`RenderPrimitive` primitive, :ref:`RDPipelineRasterizationState` rasterization_state, :ref:`RDPipelineMultisampleState` multisample_state, :ref:`RDPipelineDepthStencilState` stencil_state, :ref:`RDPipelineColorBlendState` color_blend_state, :ref:`PipelineDynamicStateFlags` dynamic_state_flags=0, :ref:`int` for_render_pass=0, :ref:`RDPipelineSpecializationConstant[]` specialization_constants=[] **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`render_pipeline_is_valid` **(** :ref:`RID` render_pipeline **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`sampler_create` **(** :ref:`RDSamplerState` state **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`sampler_is_format_supported_for_filter` **(** :ref:`DataFormat` format, :ref:`SamplerFilter` sampler_filter **)** |const| | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`screen_get_framebuffer_format` **(** **)** |const| | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`screen_get_height` **(** :ref:`int` screen=0 **)** |const| | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`screen_get_width` **(** :ref:`int` screen=0 **)** |const| | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`set_resource_name` **(** :ref:`RID` id, :ref:`String` name **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedByteArray` | :ref:`shader_compile_binary_from_spirv` **(** :ref:`RDShaderSPIRV` spirv_data, :ref:`String` name="" **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RDShaderSPIRV` | :ref:`shader_compile_spirv_from_source` **(** :ref:`RDShaderSource` shader_source, :ref:`bool` allow_cache=true **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`shader_create_from_bytecode` **(** :ref:`PackedByteArray` binary_data **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`shader_create_from_spirv` **(** :ref:`RDShaderSPIRV` spirv_data, :ref:`String` name="" **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`shader_get_vertex_input_attribute_mask` **(** :ref:`RID` shader **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`storage_buffer_create` **(** :ref:`int` size_bytes, :ref:`PackedByteArray` data=PackedByteArray(), :ref:`StorageBufferUsage` usage=0 **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`submit` **(** **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`sync` **(** **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`texture_buffer_create` **(** :ref:`int` size_bytes, :ref:`DataFormat` format, :ref:`PackedByteArray` data=PackedByteArray() **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Error` | :ref:`texture_clear` **(** :ref:`RID` texture, :ref:`Color` color, :ref:`int` base_mipmap, :ref:`int` mipmap_count, :ref:`int` base_layer, :ref:`int` layer_count, :ref:`BarrierMask` post_barrier=7 **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Error` | :ref:`texture_copy` **(** :ref:`RID` from_texture, :ref:`RID` to_texture, :ref:`Vector3` from_pos, :ref:`Vector3` to_pos, :ref:`Vector3` size, :ref:`int` src_mipmap, :ref:`int` dst_mipmap, :ref:`int` src_layer, :ref:`int` dst_layer, :ref:`BarrierMask` post_barrier=7 **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`texture_create` **(** :ref:`RDTextureFormat` format, :ref:`RDTextureView` view, :ref:`PackedByteArray[]` data=[] **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`texture_create_shared` **(** :ref:`RDTextureView` view, :ref:`RID` with_texture **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`texture_create_shared_from_slice` **(** :ref:`RDTextureView` view, :ref:`RID` with_texture, :ref:`int` layer, :ref:`int` mipmap, :ref:`int` mipmaps=1, :ref:`TextureSliceType` slice_type=0 **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedByteArray` | :ref:`texture_get_data` **(** :ref:`RID` texture, :ref:`int` layer **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`texture_is_format_supported_for_usage` **(** :ref:`DataFormat` format, :ref:`TextureUsageBits` usage_flags **)** |const| | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`texture_is_shared` **(** :ref:`RID` texture **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`texture_is_valid` **(** :ref:`RID` texture **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Error` | :ref:`texture_resolve_multisample` **(** :ref:`RID` from_texture, :ref:`RID` to_texture, :ref:`BarrierMask` post_barrier=7 **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Error` | :ref:`texture_update` **(** :ref:`RID` texture, :ref:`int` layer, :ref:`PackedByteArray` data, :ref:`BarrierMask` post_barrier=7 **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`uniform_buffer_create` **(** :ref:`int` size_bytes, :ref:`PackedByteArray` data=PackedByteArray() **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`uniform_set_create` **(** :ref:`RDUniform[]` uniforms, :ref:`RID` shader, :ref:`int` shader_set **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`uniform_set_is_valid` **(** :ref:`RID` uniform_set **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`vertex_array_create` **(** :ref:`int` vertex_count, :ref:`int` vertex_format, :ref:`RID[]` src_buffers, :ref:`PackedInt64Array` offsets=PackedInt64Array() **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`vertex_buffer_create` **(** :ref:`int` size_bytes, :ref:`PackedByteArray` data=PackedByteArray(), :ref:`bool` use_as_storage=false **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`vertex_format_create` **(** :ref:`RDVertexAttribute[]` vertex_descriptions **)** | - +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`barrier` **(** |bitfield|\<:ref:`BarrierMask`\> from=7, |bitfield|\<:ref:`BarrierMask`\> to=7 **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Error` | :ref:`buffer_clear` **(** :ref:`RID` buffer, :ref:`int` offset, :ref:`int` size_bytes, |bitfield|\<:ref:`BarrierMask`\> post_barrier=7 **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedByteArray` | :ref:`buffer_get_data` **(** :ref:`RID` buffer, :ref:`int` offset_bytes=0, :ref:`int` size_bytes=0 **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Error` | :ref:`buffer_update` **(** :ref:`RID` buffer, :ref:`int` offset, :ref:`int` size_bytes, :ref:`PackedByteArray` data, |bitfield|\<:ref:`BarrierMask`\> post_barrier=7 **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`capture_timestamp` **(** :ref:`String` name **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`compute_list_add_barrier` **(** :ref:`int` compute_list **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`compute_list_begin` **(** :ref:`bool` allow_draw_overlap=false **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`compute_list_bind_compute_pipeline` **(** :ref:`int` compute_list, :ref:`RID` compute_pipeline **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`compute_list_bind_uniform_set` **(** :ref:`int` compute_list, :ref:`RID` uniform_set, :ref:`int` set_index **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`compute_list_dispatch` **(** :ref:`int` compute_list, :ref:`int` x_groups, :ref:`int` y_groups, :ref:`int` z_groups **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`compute_list_end` **(** |bitfield|\<:ref:`BarrierMask`\> post_barrier=7 **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`compute_list_set_push_constant` **(** :ref:`int` compute_list, :ref:`PackedByteArray` buffer, :ref:`int` size_bytes **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`compute_pipeline_create` **(** :ref:`RID` shader, :ref:`RDPipelineSpecializationConstant[]` specialization_constants=[] **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`compute_pipeline_is_valid` **(** :ref:`RID` compute_pipeline **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RenderingDevice` | :ref:`create_local_device` **(** **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`draw_command_begin_label` **(** :ref:`String` name, :ref:`Color` color **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`draw_command_end_label` **(** **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`draw_command_insert_label` **(** :ref:`String` name, :ref:`Color` color **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`draw_list_begin` **(** :ref:`RID` framebuffer, :ref:`InitialAction` initial_color_action, :ref:`FinalAction` final_color_action, :ref:`InitialAction` initial_depth_action, :ref:`FinalAction` final_depth_action, :ref:`PackedColorArray` clear_color_values=PackedColorArray(), :ref:`float` clear_depth=1.0, :ref:`int` clear_stencil=0, :ref:`Rect2` region=Rect2(0, 0, 0, 0), :ref:`RID[]` storage_textures=[] **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`draw_list_begin_for_screen` **(** :ref:`int` screen=0, :ref:`Color` clear_color=Color(0, 0, 0, 1) **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedInt64Array` | :ref:`draw_list_begin_split` **(** :ref:`RID` framebuffer, :ref:`int` splits, :ref:`InitialAction` initial_color_action, :ref:`FinalAction` final_color_action, :ref:`InitialAction` initial_depth_action, :ref:`FinalAction` final_depth_action, :ref:`PackedColorArray` clear_color_values=PackedColorArray(), :ref:`float` clear_depth=1.0, :ref:`int` clear_stencil=0, :ref:`Rect2` region=Rect2(0, 0, 0, 0), :ref:`RID[]` storage_textures=[] **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`draw_list_bind_index_array` **(** :ref:`int` draw_list, :ref:`RID` index_array **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`draw_list_bind_render_pipeline` **(** :ref:`int` draw_list, :ref:`RID` render_pipeline **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`draw_list_bind_uniform_set` **(** :ref:`int` draw_list, :ref:`RID` uniform_set, :ref:`int` set_index **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`draw_list_bind_vertex_array` **(** :ref:`int` draw_list, :ref:`RID` vertex_array **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`draw_list_disable_scissor` **(** :ref:`int` draw_list **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`draw_list_draw` **(** :ref:`int` draw_list, :ref:`bool` use_indices, :ref:`int` instances, :ref:`int` procedural_vertex_count=0 **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`draw_list_enable_scissor` **(** :ref:`int` draw_list, :ref:`Rect2` rect=Rect2(0, 0, 0, 0) **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`draw_list_end` **(** |bitfield|\<:ref:`BarrierMask`\> post_barrier=7 **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`draw_list_set_blend_constants` **(** :ref:`int` draw_list, :ref:`Color` color **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`draw_list_set_push_constant` **(** :ref:`int` draw_list, :ref:`PackedByteArray` buffer, :ref:`int` size_bytes **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`draw_list_switch_to_next_pass` **(** **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedInt64Array` | :ref:`draw_list_switch_to_next_pass_split` **(** :ref:`int` splits **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`framebuffer_create` **(** :ref:`RID[]` textures, :ref:`int` validate_with_format=-1, :ref:`int` view_count=1 **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`framebuffer_create_empty` **(** :ref:`Vector2i` size, :ref:`TextureSamples` samples=0, :ref:`int` validate_with_format=-1 **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`framebuffer_create_multipass` **(** :ref:`RID[]` textures, :ref:`RDFramebufferPass[]` passes, :ref:`int` validate_with_format=-1, :ref:`int` view_count=1 **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`framebuffer_format_create` **(** :ref:`RDAttachmentFormat[]` attachments, :ref:`int` view_count=1 **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`framebuffer_format_create_empty` **(** :ref:`TextureSamples` samples=0 **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`framebuffer_format_create_multipass` **(** :ref:`RDAttachmentFormat[]` attachments, :ref:`RDFramebufferPass[]` passes, :ref:`int` view_count=1 **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`TextureSamples` | :ref:`framebuffer_format_get_texture_samples` **(** :ref:`int` format, :ref:`int` render_pass=0 **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`framebuffer_get_format` **(** :ref:`RID` framebuffer **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`framebuffer_is_valid` **(** :ref:`RID` framebuffer **)** |const| | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`free_rid` **(** :ref:`RID` rid **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`full_barrier` **(** **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_captured_timestamp_cpu_time` **(** :ref:`int` index **)** |const| | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_captured_timestamp_gpu_time` **(** :ref:`int` index **)** |const| | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`get_captured_timestamp_name` **(** :ref:`int` index **)** |const| | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_captured_timestamps_count` **(** **)** |const| | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_captured_timestamps_frame` **(** **)** |const| | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`get_device_name` **(** **)** |const| | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`get_device_pipeline_cache_uuid` **(** **)** |const| | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`get_device_vendor_name` **(** **)** |const| | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_driver_resource` **(** :ref:`DriverResource` resource, :ref:`RID` rid, :ref:`int` index **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_frame_delay` **(** **)** |const| | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_memory_usage` **(** :ref:`MemoryType` type **)** |const| | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`index_array_create` **(** :ref:`RID` index_buffer, :ref:`int` index_offset, :ref:`int` index_count **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`index_buffer_create` **(** :ref:`int` size_indices, :ref:`IndexBufferFormat` format, :ref:`PackedByteArray` data=PackedByteArray(), :ref:`bool` use_restart_indices=false **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`limit_get` **(** :ref:`Limit` limit **)** |const| | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`render_pipeline_create` **(** :ref:`RID` shader, :ref:`int` framebuffer_format, :ref:`int` vertex_format, :ref:`RenderPrimitive` primitive, :ref:`RDPipelineRasterizationState` rasterization_state, :ref:`RDPipelineMultisampleState` multisample_state, :ref:`RDPipelineDepthStencilState` stencil_state, :ref:`RDPipelineColorBlendState` color_blend_state, |bitfield|\<:ref:`PipelineDynamicStateFlags`\> dynamic_state_flags=0, :ref:`int` for_render_pass=0, :ref:`RDPipelineSpecializationConstant[]` specialization_constants=[] **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`render_pipeline_is_valid` **(** :ref:`RID` render_pipeline **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`sampler_create` **(** :ref:`RDSamplerState` state **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`sampler_is_format_supported_for_filter` **(** :ref:`DataFormat` format, :ref:`SamplerFilter` sampler_filter **)** |const| | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`screen_get_framebuffer_format` **(** **)** |const| | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`screen_get_height` **(** :ref:`int` screen=0 **)** |const| | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`screen_get_width` **(** :ref:`int` screen=0 **)** |const| | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`set_resource_name` **(** :ref:`RID` id, :ref:`String` name **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedByteArray` | :ref:`shader_compile_binary_from_spirv` **(** :ref:`RDShaderSPIRV` spirv_data, :ref:`String` name="" **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RDShaderSPIRV` | :ref:`shader_compile_spirv_from_source` **(** :ref:`RDShaderSource` shader_source, :ref:`bool` allow_cache=true **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`shader_create_from_bytecode` **(** :ref:`PackedByteArray` binary_data **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`shader_create_from_spirv` **(** :ref:`RDShaderSPIRV` spirv_data, :ref:`String` name="" **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`shader_get_vertex_input_attribute_mask` **(** :ref:`RID` shader **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`storage_buffer_create` **(** :ref:`int` size_bytes, :ref:`PackedByteArray` data=PackedByteArray(), |bitfield|\<:ref:`StorageBufferUsage`\> usage=0 **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`submit` **(** **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`sync` **(** **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`texture_buffer_create` **(** :ref:`int` size_bytes, :ref:`DataFormat` format, :ref:`PackedByteArray` data=PackedByteArray() **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Error` | :ref:`texture_clear` **(** :ref:`RID` texture, :ref:`Color` color, :ref:`int` base_mipmap, :ref:`int` mipmap_count, :ref:`int` base_layer, :ref:`int` layer_count, |bitfield|\<:ref:`BarrierMask`\> post_barrier=7 **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Error` | :ref:`texture_copy` **(** :ref:`RID` from_texture, :ref:`RID` to_texture, :ref:`Vector3` from_pos, :ref:`Vector3` to_pos, :ref:`Vector3` size, :ref:`int` src_mipmap, :ref:`int` dst_mipmap, :ref:`int` src_layer, :ref:`int` dst_layer, |bitfield|\<:ref:`BarrierMask`\> post_barrier=7 **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`texture_create` **(** :ref:`RDTextureFormat` format, :ref:`RDTextureView` view, :ref:`PackedByteArray[]` data=[] **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`texture_create_shared` **(** :ref:`RDTextureView` view, :ref:`RID` with_texture **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`texture_create_shared_from_slice` **(** :ref:`RDTextureView` view, :ref:`RID` with_texture, :ref:`int` layer, :ref:`int` mipmap, :ref:`int` mipmaps=1, :ref:`TextureSliceType` slice_type=0 **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedByteArray` | :ref:`texture_get_data` **(** :ref:`RID` texture, :ref:`int` layer **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`texture_get_native_handle` **(** :ref:`RID` texture **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`texture_is_format_supported_for_usage` **(** :ref:`DataFormat` format, |bitfield|\<:ref:`TextureUsageBits`\> usage_flags **)** |const| | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`texture_is_shared` **(** :ref:`RID` texture **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`texture_is_valid` **(** :ref:`RID` texture **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Error` | :ref:`texture_resolve_multisample` **(** :ref:`RID` from_texture, :ref:`RID` to_texture, |bitfield|\<:ref:`BarrierMask`\> post_barrier=7 **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Error` | :ref:`texture_update` **(** :ref:`RID` texture, :ref:`int` layer, :ref:`PackedByteArray` data, |bitfield|\<:ref:`BarrierMask`\> post_barrier=7 **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`uniform_buffer_create` **(** :ref:`int` size_bytes, :ref:`PackedByteArray` data=PackedByteArray() **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`uniform_set_create` **(** :ref:`RDUniform[]` uniforms, :ref:`RID` shader, :ref:`int` shader_set **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`uniform_set_is_valid` **(** :ref:`RID` uniform_set **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`vertex_array_create` **(** :ref:`int` vertex_count, :ref:`int` vertex_format, :ref:`RID[]` src_buffers, :ref:`PackedInt64Array` offsets=PackedInt64Array() **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`vertex_buffer_create` **(** :ref:`int` size_bytes, :ref:`PackedByteArray` data=PackedByteArray(), :ref:`bool` use_as_storage=false **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`vertex_format_create` **(** :ref:`RDVertexAttribute[]` vertex_descriptions **)** | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator @@ -4309,7 +4311,7 @@ Method Descriptions .. rst-class:: classref-method -void **barrier** **(** :ref:`BarrierMask` from=7, :ref:`BarrierMask` to=7 **)** +void **barrier** **(** |bitfield|\<:ref:`BarrierMask`\> from=7, |bitfield|\<:ref:`BarrierMask`\> to=7 **)** Puts a memory barrier in place. This is used for synchronization to avoid data races. See also :ref:`full_barrier`, which may be useful for debugging. @@ -4321,7 +4323,7 @@ Puts a memory barrier in place. This is used for synchronization to avoid data r .. rst-class:: classref-method -:ref:`Error` **buffer_clear** **(** :ref:`RID` buffer, :ref:`int` offset, :ref:`int` size_bytes, :ref:`BarrierMask` post_barrier=7 **)** +:ref:`Error` **buffer_clear** **(** :ref:`RID` buffer, :ref:`int` offset, :ref:`int` size_bytes, |bitfield|\<:ref:`BarrierMask`\> post_barrier=7 **)** .. container:: contribute @@ -4347,7 +4349,7 @@ Returns a copy of the data of the specified ``buffer``, optionally ``offset_byte .. rst-class:: classref-method -:ref:`Error` **buffer_update** **(** :ref:`RID` buffer, :ref:`int` offset, :ref:`int` size_bytes, :ref:`PackedByteArray` data, :ref:`BarrierMask` post_barrier=7 **)** +:ref:`Error` **buffer_update** **(** :ref:`RID` buffer, :ref:`int` offset, :ref:`int` size_bytes, :ref:`PackedByteArray` data, |bitfield|\<:ref:`BarrierMask`\> post_barrier=7 **)** .. container:: contribute @@ -4459,7 +4461,7 @@ Submits the compute list for processing on the GPU. This is the compute equivale .. rst-class:: classref-method -void **compute_list_end** **(** :ref:`BarrierMask` post_barrier=7 **)** +void **compute_list_end** **(** |bitfield|\<:ref:`BarrierMask`\> post_barrier=7 **)** Finishes a list of compute commands created with the ``compute_*`` methods. @@ -4706,7 +4708,7 @@ Creates a scissor rectangle and enables it for the specified ``draw_list``. Scis .. rst-class:: classref-method -void **draw_list_end** **(** :ref:`BarrierMask` post_barrier=7 **)** +void **draw_list_end** **(** |bitfield|\<:ref:`BarrierMask`\> post_barrier=7 **)** Finishes a list of raster drawing commands created with the ``draw_*`` methods. @@ -5080,7 +5082,7 @@ Limits for various graphics hardware can be found in the `Vulkan Hardware Databa .. rst-class:: classref-method -:ref:`RID` **render_pipeline_create** **(** :ref:`RID` shader, :ref:`int` framebuffer_format, :ref:`int` vertex_format, :ref:`RenderPrimitive` primitive, :ref:`RDPipelineRasterizationState` rasterization_state, :ref:`RDPipelineMultisampleState` multisample_state, :ref:`RDPipelineDepthStencilState` stencil_state, :ref:`RDPipelineColorBlendState` color_blend_state, :ref:`PipelineDynamicStateFlags` dynamic_state_flags=0, :ref:`int` for_render_pass=0, :ref:`RDPipelineSpecializationConstant[]` specialization_constants=[] **)** +:ref:`RID` **render_pipeline_create** **(** :ref:`RID` shader, :ref:`int` framebuffer_format, :ref:`int` vertex_format, :ref:`RenderPrimitive` primitive, :ref:`RDPipelineRasterizationState` rasterization_state, :ref:`RDPipelineMultisampleState` multisample_state, :ref:`RDPipelineDepthStencilState` stencil_state, :ref:`RDPipelineColorBlendState` color_blend_state, |bitfield|\<:ref:`PipelineDynamicStateFlags`\> dynamic_state_flags=0, :ref:`int` for_render_pass=0, :ref:`RDPipelineSpecializationConstant[]` specialization_constants=[] **)** Creates a new render pipeline. It can be accessed with the RID that is returned. @@ -5260,7 +5262,7 @@ Once finished with your RID, you will want to free the RID using the RenderingDe .. rst-class:: classref-method -:ref:`RID` **storage_buffer_create** **(** :ref:`int` size_bytes, :ref:`PackedByteArray` data=PackedByteArray(), :ref:`StorageBufferUsage` usage=0 **)** +:ref:`RID` **storage_buffer_create** **(** :ref:`int` size_bytes, :ref:`PackedByteArray` data=PackedByteArray(), |bitfield|\<:ref:`StorageBufferUsage`\> usage=0 **)** Creates a `storage buffer `__ with the specified ``data`` and ``usage``. It can be accessed with the RID that is returned. @@ -5318,7 +5320,7 @@ Once finished with your RID, you will want to free the RID using the RenderingDe .. rst-class:: classref-method -:ref:`Error` **texture_clear** **(** :ref:`RID` texture, :ref:`Color` color, :ref:`int` base_mipmap, :ref:`int` mipmap_count, :ref:`int` base_layer, :ref:`int` layer_count, :ref:`BarrierMask` post_barrier=7 **)** +:ref:`Error` **texture_clear** **(** :ref:`RID` texture, :ref:`Color` color, :ref:`int` base_mipmap, :ref:`int` mipmap_count, :ref:`int` base_layer, :ref:`int` layer_count, |bitfield|\<:ref:`BarrierMask`\> post_barrier=7 **)** Clears the specified ``texture`` by replacing all of its pixels with the specified ``color``. ``base_mipmap`` and ``mipmap_count`` determine which mipmaps of the texture are affected by this clear operation, while ``base_layer`` and ``layer_count`` determine which layers of a 3D texture (or texture array) are affected by this clear operation. For 2D textures (which only have one layer by design), ``base_layer`` and ``layer_count`` must both be ``0``. @@ -5332,7 +5334,7 @@ Clears the specified ``texture`` by replacing all of its pixels with the specifi .. rst-class:: classref-method -:ref:`Error` **texture_copy** **(** :ref:`RID` from_texture, :ref:`RID` to_texture, :ref:`Vector3` from_pos, :ref:`Vector3` to_pos, :ref:`Vector3` size, :ref:`int` src_mipmap, :ref:`int` dst_mipmap, :ref:`int` src_layer, :ref:`int` dst_layer, :ref:`BarrierMask` post_barrier=7 **)** +:ref:`Error` **texture_copy** **(** :ref:`RID` from_texture, :ref:`RID` to_texture, :ref:`Vector3` from_pos, :ref:`Vector3` to_pos, :ref:`Vector3` size, :ref:`int` src_mipmap, :ref:`int` dst_mipmap, :ref:`int` src_layer, :ref:`int` dst_layer, |bitfield|\<:ref:`BarrierMask`\> post_barrier=7 **)** Copies the ``from_texture`` to ``to_texture`` with the specified ``from_pos``, ``to_pos`` and ``size`` coordinates. The Z axis of the ``from_pos``, ``to_pos`` and ``size`` must be ``0`` for 2-dimensional textures. Source and destination mipmaps/layers must also be specified, with these parameters being ``0`` for textures without mipmaps or single-layer textures. Returns :ref:`@GlobalScope.OK` if the texture copy was successful or :ref:`@GlobalScope.ERR_INVALID_PARAMETER` otherwise. @@ -5410,11 +5412,25 @@ Returns the ``texture`` data for the specified ``layer`` as raw binary data. For ---- +.. _class_RenderingDevice_method_texture_get_native_handle: + +.. rst-class:: classref-method + +:ref:`int` **texture_get_native_handle** **(** :ref:`RID` texture **)** + +Returns the internal graphics handle for this texture object. For use when communicating with third-party APIs mostly with GDExtension. + +\ **Note:** This function returns a ``uint64_t`` which internally maps to a ``GLuint`` (OpenGL) or ``VkImage`` (Vulkan). + +.. rst-class:: classref-item-separator + +---- + .. _class_RenderingDevice_method_texture_is_format_supported_for_usage: .. rst-class:: classref-method -:ref:`bool` **texture_is_format_supported_for_usage** **(** :ref:`DataFormat` format, :ref:`TextureUsageBits` usage_flags **)** |const| +:ref:`bool` **texture_is_format_supported_for_usage** **(** :ref:`DataFormat` format, |bitfield|\<:ref:`TextureUsageBits`\> usage_flags **)** |const| Returns ``true`` if the specified ``format`` is supported for the given ``usage_flags``, ``false`` otherwise. @@ -5450,7 +5466,7 @@ Returns ``true`` if the ``texture`` is valid, ``false`` otherwise. .. rst-class:: classref-method -:ref:`Error` **texture_resolve_multisample** **(** :ref:`RID` from_texture, :ref:`RID` to_texture, :ref:`BarrierMask` post_barrier=7 **)** +:ref:`Error` **texture_resolve_multisample** **(** :ref:`RID` from_texture, :ref:`RID` to_texture, |bitfield|\<:ref:`BarrierMask`\> post_barrier=7 **)** Resolves the ``from_texture`` texture onto ``to_texture`` with multisample antialiasing enabled. This must be used when rendering a framebuffer for MSAA to work. Returns :ref:`@GlobalScope.OK` if successful, :ref:`@GlobalScope.ERR_INVALID_PARAMETER` otherwise. @@ -5476,7 +5492,7 @@ Resolves the ``from_texture`` texture onto ``to_texture`` with multisample antia .. rst-class:: classref-method -:ref:`Error` **texture_update** **(** :ref:`RID` texture, :ref:`int` layer, :ref:`PackedByteArray` data, :ref:`BarrierMask` post_barrier=7 **)** +:ref:`Error` **texture_update** **(** :ref:`RID` texture, :ref:`int` layer, :ref:`PackedByteArray` data, |bitfield|\<:ref:`BarrierMask`\> post_barrier=7 **)** Updates texture data with new data, replacing the previous data in place. The updated texture data must have the same dimensions and format. For 2D textures (which only have one layer), ``layer`` must be ``0``. Returns :ref:`@GlobalScope.OK` if the update was successful, :ref:`@GlobalScope.ERR_INVALID_PARAMETER` otherwise. @@ -5572,3 +5588,4 @@ Creates a new vertex format with the specified ``vertex_descriptions``. Returns .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_renderingserver.rst b/classes/class_renderingserver.rst index b93dd266af74..f220b84b57f4 100644 --- a/classes/class_renderingserver.rst +++ b/classes/class_renderingserver.rst @@ -109,19 +109,19 @@ Methods +----------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`canvas_item_add_line` **(** :ref:`RID` item, :ref:`Vector2` from, :ref:`Vector2` to, :ref:`Color` color, :ref:`float` width=-1.0, :ref:`bool` antialiased=false **)** | +----------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`canvas_item_add_mesh` **(** :ref:`RID` item, :ref:`RID` mesh, :ref:`Transform2D` transform=Transform2D(1, 0, 0, 1, 0, 0), :ref:`Color` modulate=Color(1, 1, 1, 1), :ref:`RID` texture **)** | + | void | :ref:`canvas_item_add_mesh` **(** :ref:`RID` item, :ref:`RID` mesh, :ref:`Transform2D` transform=Transform2D(1, 0, 0, 1, 0, 0), :ref:`Color` modulate=Color(1, 1, 1, 1), :ref:`RID` texture=RID() **)** | +----------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`canvas_item_add_msdf_texture_rect_region` **(** :ref:`RID` item, :ref:`Rect2` rect, :ref:`RID` texture, :ref:`Rect2` src_rect, :ref:`Color` modulate=Color(1, 1, 1, 1), :ref:`int` outline_size=0, :ref:`float` px_range=1.0, :ref:`float` scale=1.0 **)** | +----------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`canvas_item_add_multiline` **(** :ref:`RID` item, :ref:`PackedVector2Array` points, :ref:`PackedColorArray` colors, :ref:`float` width=-1.0 **)** | +----------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`canvas_item_add_multimesh` **(** :ref:`RID` item, :ref:`RID` mesh, :ref:`RID` texture **)** | + | void | :ref:`canvas_item_add_multimesh` **(** :ref:`RID` item, :ref:`RID` mesh, :ref:`RID` texture=RID() **)** | +----------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`canvas_item_add_nine_patch` **(** :ref:`RID` item, :ref:`Rect2` rect, :ref:`Rect2` source, :ref:`RID` texture, :ref:`Vector2` topleft, :ref:`Vector2` bottomright, :ref:`NinePatchAxisMode` x_axis_mode=0, :ref:`NinePatchAxisMode` y_axis_mode=0, :ref:`bool` draw_center=true, :ref:`Color` modulate=Color(1, 1, 1, 1) **)** | +----------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`canvas_item_add_particles` **(** :ref:`RID` item, :ref:`RID` particles, :ref:`RID` texture **)** | +----------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`canvas_item_add_polygon` **(** :ref:`RID` item, :ref:`PackedVector2Array` points, :ref:`PackedColorArray` colors, :ref:`PackedVector2Array` uvs=PackedVector2Array(), :ref:`RID` texture **)** | + | void | :ref:`canvas_item_add_polygon` **(** :ref:`RID` item, :ref:`PackedVector2Array` points, :ref:`PackedColorArray` colors, :ref:`PackedVector2Array` uvs=PackedVector2Array(), :ref:`RID` texture=RID() **)** | +----------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`canvas_item_add_polyline` **(** :ref:`RID` item, :ref:`PackedVector2Array` points, :ref:`PackedColorArray` colors, :ref:`float` width=-1.0, :ref:`bool` antialiased=false **)** | +----------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -135,7 +135,7 @@ Methods +----------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`canvas_item_add_texture_rect_region` **(** :ref:`RID` item, :ref:`Rect2` rect, :ref:`RID` texture, :ref:`Rect2` src_rect, :ref:`Color` modulate=Color(1, 1, 1, 1), :ref:`bool` transpose=false, :ref:`bool` clip_uv=true **)** | +----------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`canvas_item_add_triangle_array` **(** :ref:`RID` item, :ref:`PackedInt32Array` indices, :ref:`PackedVector2Array` points, :ref:`PackedColorArray` colors, :ref:`PackedVector2Array` uvs=PackedVector2Array(), :ref:`PackedInt32Array` bones=PackedInt32Array(), :ref:`PackedFloat32Array` weights=PackedFloat32Array(), :ref:`RID` texture, :ref:`int` count=-1 **)** | + | void | :ref:`canvas_item_add_triangle_array` **(** :ref:`RID` item, :ref:`PackedInt32Array` indices, :ref:`PackedVector2Array` points, :ref:`PackedColorArray` colors, :ref:`PackedVector2Array` uvs=PackedVector2Array(), :ref:`PackedInt32Array` bones=PackedInt32Array(), :ref:`PackedFloat32Array` weights=PackedFloat32Array(), :ref:`RID` texture=RID(), :ref:`int` count=-1 **)** | +----------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`canvas_item_clear` **(** :ref:`RID` item **)** | +----------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -463,11 +463,11 @@ Methods +----------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`instance_set_visible` **(** :ref:`RID` instance, :ref:`bool` visible **)** | +----------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedInt64Array` | :ref:`instances_cull_aabb` **(** :ref:`AABB` aabb, :ref:`RID` scenario **)** |const| | + | :ref:`PackedInt64Array` | :ref:`instances_cull_aabb` **(** :ref:`AABB` aabb, :ref:`RID` scenario=RID() **)** |const| | +----------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedInt64Array` | :ref:`instances_cull_convex` **(** :ref:`Plane[]` convex, :ref:`RID` scenario **)** |const| | + | :ref:`PackedInt64Array` | :ref:`instances_cull_convex` **(** :ref:`Plane[]` convex, :ref:`RID` scenario=RID() **)** |const| | +----------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedInt64Array` | :ref:`instances_cull_ray` **(** :ref:`Vector3` from, :ref:`Vector3` to, :ref:`RID` scenario **)** |const| | + | :ref:`PackedInt64Array` | :ref:`instances_cull_ray` **(** :ref:`Vector3` from, :ref:`Vector3` to, :ref:`RID` scenario=RID() **)** |const| | +----------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`light_directional_set_blend_splits` **(** :ref:`RID` light, :ref:`bool` enable **)** | +----------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -537,7 +537,7 @@ Methods +----------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`mesh_add_surface` **(** :ref:`RID` mesh, :ref:`Dictionary` surface **)** | +----------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`mesh_add_surface_from_arrays` **(** :ref:`RID` mesh, :ref:`PrimitiveType` primitive, :ref:`Array` arrays, :ref:`Array` blend_shapes=[], :ref:`Dictionary` lods={}, :ref:`ArrayFormat` compress_format=0 **)** | + | void | :ref:`mesh_add_surface_from_arrays` **(** :ref:`RID` mesh, :ref:`PrimitiveType` primitive, :ref:`Array` arrays, :ref:`Array` blend_shapes=[], :ref:`Dictionary` lods={}, |bitfield|\<:ref:`ArrayFormat`\> compress_format=0 **)** | +----------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`mesh_clear` **(** :ref:`RID` mesh **)** | +----------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -565,13 +565,13 @@ Methods +----------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Array[]` | :ref:`mesh_surface_get_blend_shape_arrays` **(** :ref:`RID` mesh, :ref:`int` surface **)** |const| | +----------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`mesh_surface_get_format_attribute_stride` **(** :ref:`ArrayFormat` format, :ref:`int` vertex_count **)** |const| | + | :ref:`int` | :ref:`mesh_surface_get_format_attribute_stride` **(** |bitfield|\<:ref:`ArrayFormat`\> format, :ref:`int` vertex_count **)** |const| | +----------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`mesh_surface_get_format_offset` **(** :ref:`ArrayFormat` format, :ref:`int` vertex_count, :ref:`int` array_index **)** |const| | + | :ref:`int` | :ref:`mesh_surface_get_format_offset` **(** |bitfield|\<:ref:`ArrayFormat`\> format, :ref:`int` vertex_count, :ref:`int` array_index **)** |const| | +----------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`mesh_surface_get_format_skin_stride` **(** :ref:`ArrayFormat` format, :ref:`int` vertex_count **)** |const| | + | :ref:`int` | :ref:`mesh_surface_get_format_skin_stride` **(** |bitfield|\<:ref:`ArrayFormat`\> format, :ref:`int` vertex_count **)** |const| | +----------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`mesh_surface_get_format_vertex_stride` **(** :ref:`ArrayFormat` format, :ref:`int` vertex_count **)** |const| | + | :ref:`int` | :ref:`mesh_surface_get_format_vertex_stride` **(** |bitfield|\<:ref:`ArrayFormat`\> format, :ref:`int` vertex_count **)** |const| | +----------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`RID` | :ref:`mesh_surface_get_material` **(** :ref:`RID` mesh, :ref:`int` surface **)** |const| | +----------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -1962,6 +1962,14 @@ Blurs the edges of the shadow. Can be used to hide pixel artifacts in low resolu +.. _class_RenderingServer_constant_LIGHT_PARAM_INTENSITY: + +.. rst-class:: classref-enumeration-constant + +:ref:`LightParam` **LIGHT_PARAM_INTENSITY** = ``20`` + +Constant representing the intensity of the light, measured in Lumens when dealing with a :ref:`SpotLight3D` or :ref:`OmniLight3D`, or measured in Lux with a :ref:`DirectionalLight3D`. Only used when :ref:`ProjectSettings.rendering/lights_and_shadows/use_physical_light_units` is ``true``. + .. _class_RenderingServer_constant_LIGHT_PARAM_MAX: .. rst-class:: classref-enumeration-constant @@ -3054,7 +3062,7 @@ Number of objects drawn in a single frame. :ref:`ViewportRenderInfo` **VIEWPORT_RENDER_INFO_PRIMITIVES_IN_FRAME** = ``1`` -Number of vertices drawn in a single frame. +Number of points, lines, or triangles drawn in a single frame. .. _class_RenderingServer_constant_VIEWPORT_RENDER_INFO_DRAW_CALLS_IN_FRAME: @@ -5074,7 +5082,7 @@ Number of objects rendered in the current 3D scene. This varies depending on cam :ref:`RenderingInfo` **RENDERING_INFO_TOTAL_PRIMITIVES_IN_FRAME** = ``1`` -Number of vertices/indices rendered in the current 3D scene. This varies depending on camera position and rotation. +Number of points, lines, or triangles rendered in the current 3D scene. This varies depending on camera position and rotation. .. _class_RenderingServer_constant_RENDERING_INFO_TOTAL_DRAW_CALLS_IN_FRAME: @@ -5098,7 +5106,7 @@ Texture memory used (in bytes). :ref:`RenderingInfo` **RENDERING_INFO_BUFFER_MEM_USED** = ``4`` -Buffer memory used (in bytes). +Buffer memory used (in bytes). This includes vertex data, uniform buffers, and many miscellaneous buffer types used internally. .. _class_RenderingServer_constant_RENDERING_INFO_VIDEO_MEM_USED: @@ -5106,7 +5114,7 @@ Buffer memory used (in bytes). :ref:`RenderingInfo` **RENDERING_INFO_VIDEO_MEM_USED** = ``5`` -Video memory used (in bytes). This is always greater than the sum of :ref:`RENDERING_INFO_TEXTURE_MEM_USED` and :ref:`RENDERING_INFO_BUFFER_MEM_USED`, since there is miscellaneous data not accounted for by those two metrics. +Video memory used (in bytes). When using the Forward+ or mobile rendering backends, this is always greater than the sum of :ref:`RENDERING_INFO_TEXTURE_MEM_USED` and :ref:`RENDERING_INFO_BUFFER_MEM_USED`, since there is miscellaneous data not accounted for by those two metrics. When using the GL Compatibility backend, this is equal to the sum of :ref:`RENDERING_INFO_TEXTURE_MEM_USED` and :ref:`RENDERING_INFO_BUFFER_MEM_USED`. .. rst-class:: classref-item-separator @@ -5588,7 +5596,7 @@ Draws a line on the :ref:`CanvasItem` pointed to by the ``item .. rst-class:: classref-method -void **canvas_item_add_mesh** **(** :ref:`RID` item, :ref:`RID` mesh, :ref:`Transform2D` transform=Transform2D(1, 0, 0, 1, 0, 0), :ref:`Color` modulate=Color(1, 1, 1, 1), :ref:`RID` texture **)** +void **canvas_item_add_mesh** **(** :ref:`RID` item, :ref:`RID` mesh, :ref:`Transform2D` transform=Transform2D(1, 0, 0, 1, 0, 0), :ref:`Color` modulate=Color(1, 1, 1, 1), :ref:`RID` texture=RID() **)** Draws a mesh created with :ref:`mesh_create` with given ``transform``, ``modulate`` color, and ``texture``. This is used internally by :ref:`MeshInstance2D`. @@ -5624,7 +5632,7 @@ Draws a 2D multiline on the :ref:`CanvasItem` pointed to by th .. rst-class:: classref-method -void **canvas_item_add_multimesh** **(** :ref:`RID` item, :ref:`RID` mesh, :ref:`RID` texture **)** +void **canvas_item_add_multimesh** **(** :ref:`RID` item, :ref:`RID` mesh, :ref:`RID` texture=RID() **)** Draws a 2D :ref:`MultiMesh` on the :ref:`CanvasItem` pointed to by the ``item`` :ref:`RID`. See also :ref:`CanvasItem.draw_multimesh`. @@ -5660,7 +5668,7 @@ Draws particles on the :ref:`CanvasItem` pointed to by the ``i .. rst-class:: classref-method -void **canvas_item_add_polygon** **(** :ref:`RID` item, :ref:`PackedVector2Array` points, :ref:`PackedColorArray` colors, :ref:`PackedVector2Array` uvs=PackedVector2Array(), :ref:`RID` texture **)** +void **canvas_item_add_polygon** **(** :ref:`RID` item, :ref:`PackedVector2Array` points, :ref:`PackedColorArray` colors, :ref:`PackedVector2Array` uvs=PackedVector2Array(), :ref:`RID` texture=RID() **)** Draws a 2D polygon on the :ref:`CanvasItem` pointed to by the ``item`` :ref:`RID`. If you need more flexibility (such as being able to use bones), use :ref:`canvas_item_add_triangle_array` instead. See also :ref:`CanvasItem.draw_polygon`. @@ -5744,7 +5752,7 @@ Draws the specified region of a 2D textured rectangle on the :ref:`CanvasItem` item, :ref:`PackedInt32Array` indices, :ref:`PackedVector2Array` points, :ref:`PackedColorArray` colors, :ref:`PackedVector2Array` uvs=PackedVector2Array(), :ref:`PackedInt32Array` bones=PackedInt32Array(), :ref:`PackedFloat32Array` weights=PackedFloat32Array(), :ref:`RID` texture, :ref:`int` count=-1 **)** +void **canvas_item_add_triangle_array** **(** :ref:`RID` item, :ref:`PackedInt32Array` indices, :ref:`PackedVector2Array` points, :ref:`PackedColorArray` colors, :ref:`PackedVector2Array` uvs=PackedVector2Array(), :ref:`PackedInt32Array` bones=PackedInt32Array(), :ref:`PackedFloat32Array` weights=PackedFloat32Array(), :ref:`RID` texture=RID(), :ref:`int` count=-1 **)** Draws a triangle array on the :ref:`CanvasItem` pointed to by the ``item`` :ref:`RID`. This is internally used by :ref:`Line2D` and :ref:`StyleBoxFlat` for rendering. :ref:`canvas_item_add_triangle_array` is highly flexible, but more complex to use than :ref:`canvas_item_add_polygon`. @@ -7834,7 +7842,7 @@ Sets whether an instance is drawn or not. Equivalent to :ref:`Node3D.visible` **instances_cull_aabb** **(** :ref:`AABB` aabb, :ref:`RID` scenario **)** |const| +:ref:`PackedInt64Array` **instances_cull_aabb** **(** :ref:`AABB` aabb, :ref:`RID` scenario=RID() **)** |const| Returns an array of object IDs intersecting with the provided AABB. Only 3D nodes that inherit from :ref:`VisualInstance3D` are considered, such as :ref:`MeshInstance3D` or :ref:`DirectionalLight3D`. Use :ref:`@GlobalScope.instance_from_id` to obtain the actual nodes. A scenario RID must be provided, which is available in the :ref:`World3D` you want to query. This forces an update for all resources queued to update. @@ -7848,7 +7856,7 @@ Returns an array of object IDs intersecting with the provided AABB. Only 3D node .. rst-class:: classref-method -:ref:`PackedInt64Array` **instances_cull_convex** **(** :ref:`Plane[]` convex, :ref:`RID` scenario **)** |const| +:ref:`PackedInt64Array` **instances_cull_convex** **(** :ref:`Plane[]` convex, :ref:`RID` scenario=RID() **)** |const| Returns an array of object IDs intersecting with the provided convex shape. Only 3D nodes that inherit from :ref:`VisualInstance3D` are considered, such as :ref:`MeshInstance3D` or :ref:`DirectionalLight3D`. Use :ref:`@GlobalScope.instance_from_id` to obtain the actual nodes. A scenario RID must be provided, which is available in the :ref:`World3D` you want to query. This forces an update for all resources queued to update. @@ -7862,7 +7870,7 @@ Returns an array of object IDs intersecting with the provided convex shape. Only .. rst-class:: classref-method -:ref:`PackedInt64Array` **instances_cull_ray** **(** :ref:`Vector3` from, :ref:`Vector3` to, :ref:`RID` scenario **)** |const| +:ref:`PackedInt64Array` **instances_cull_ray** **(** :ref:`Vector3` from, :ref:`Vector3` to, :ref:`RID` scenario=RID() **)** |const| Returns an array of object IDs intersecting with the provided 3D ray. Only 3D nodes that inherit from :ref:`VisualInstance3D` are considered, such as :ref:`MeshInstance3D` or :ref:`DirectionalLight3D`. Use :ref:`@GlobalScope.instance_from_id` to obtain the actual nodes. A scenario RID must be provided, which is available in the :ref:`World3D` you want to query. This forces an update for all resources queued to update. @@ -8310,7 +8318,7 @@ void **mesh_add_surface** **(** :ref:`RID` mesh, :ref:`Dictionary` mesh, :ref:`PrimitiveType` primitive, :ref:`Array` arrays, :ref:`Array` blend_shapes=[], :ref:`Dictionary` lods={}, :ref:`ArrayFormat` compress_format=0 **)** +void **mesh_add_surface_from_arrays** **(** :ref:`RID` mesh, :ref:`PrimitiveType` primitive, :ref:`Array` arrays, :ref:`Array` blend_shapes=[], :ref:`Dictionary` lods={}, |bitfield|\<:ref:`ArrayFormat`\> compress_format=0 **)** .. container:: contribute @@ -8492,7 +8500,7 @@ Returns a mesh's surface's arrays for blend shapes. .. rst-class:: classref-method -:ref:`int` **mesh_surface_get_format_attribute_stride** **(** :ref:`ArrayFormat` format, :ref:`int` vertex_count **)** |const| +:ref:`int` **mesh_surface_get_format_attribute_stride** **(** |bitfield|\<:ref:`ArrayFormat`\> format, :ref:`int` vertex_count **)** |const| .. container:: contribute @@ -8506,7 +8514,7 @@ Returns a mesh's surface's arrays for blend shapes. .. rst-class:: classref-method -:ref:`int` **mesh_surface_get_format_offset** **(** :ref:`ArrayFormat` format, :ref:`int` vertex_count, :ref:`int` array_index **)** |const| +:ref:`int` **mesh_surface_get_format_offset** **(** |bitfield|\<:ref:`ArrayFormat`\> format, :ref:`int` vertex_count, :ref:`int` array_index **)** |const| .. container:: contribute @@ -8520,7 +8528,7 @@ Returns a mesh's surface's arrays for blend shapes. .. rst-class:: classref-method -:ref:`int` **mesh_surface_get_format_skin_stride** **(** :ref:`ArrayFormat` format, :ref:`int` vertex_count **)** |const| +:ref:`int` **mesh_surface_get_format_skin_stride** **(** |bitfield|\<:ref:`ArrayFormat`\> format, :ref:`int` vertex_count **)** |const| .. container:: contribute @@ -8534,7 +8542,7 @@ Returns a mesh's surface's arrays for blend shapes. .. rst-class:: classref-method -:ref:`int` **mesh_surface_get_format_vertex_stride** **(** :ref:`ArrayFormat` format, :ref:`int` vertex_count **)** |const| +:ref:`int` **mesh_surface_get_format_vertex_stride** **(** |bitfield|\<:ref:`ArrayFormat`\> format, :ref:`int` vertex_count **)** |const| .. container:: contribute @@ -10203,9 +10211,9 @@ Updates the texture specified by the ``texture`` :ref:`RID`'s data wi :ref:`int` **texture_get_native_handle** **(** :ref:`RID` texture, :ref:`bool` srgb=false **)** |const| -Returns the internal graphics handle for this texture object. For use when communicating with 3rd party APIs mostly with GDExternal. +Returns the internal graphics handle for this texture object. For use when communicating with third-party APIs mostly with GDExtension. -\ **Note:** This functions returns a ``uint64_t`` which internally maps to a ``GLuint`` (OpenGL) or ``VkImage`` (Vulkan). +\ **Note:** This function returns a ``uint64_t`` which internally maps to a ``GLuint`` (OpenGL) or ``VkImage`` (Vulkan). .. rst-class:: classref-item-separator @@ -11224,3 +11232,4 @@ Sets the :ref:`VoxelGIData.use_two_bounces` **<** :ref:`Object` -**Inherited By:** :ref:`Animation`, :ref:`AnimationLibrary`, :ref:`AnimationNode`, :ref:`AnimationNodeStateMachinePlayback`, :ref:`AnimationNodeStateMachineTransition`, :ref:`AudioBusLayout`, :ref:`AudioEffect`, :ref:`AudioStream`, :ref:`BitMap`, :ref:`BoneMap`, :ref:`ButtonGroup`, :ref:`CameraAttributes`, :ref:`CryptoKey`, :ref:`Curve`, :ref:`Curve2D`, :ref:`Curve3D`, :ref:`EditorNode3DGizmoPlugin`, :ref:`EditorSettings`, :ref:`Environment`, :ref:`Font`, :ref:`GDExtension`, :ref:`GLTFAccessor`, :ref:`GLTFAnimation`, :ref:`GLTFBufferView`, :ref:`GLTFCamera`, :ref:`GLTFCollider`, :ref:`GLTFDocument`, :ref:`GLTFDocumentExtension`, :ref:`GLTFLight`, :ref:`GLTFMesh`, :ref:`GLTFNode`, :ref:`GLTFPhysicsBody`, :ref:`GLTFSkeleton`, :ref:`GLTFSkin`, :ref:`GLTFSpecGloss`, :ref:`GLTFState`, :ref:`GLTFTexture`, :ref:`GLTFTextureSampler`, :ref:`Gradient`, :ref:`Image`, :ref:`ImporterMesh`, :ref:`InputEvent`, :ref:`JSON`, :ref:`LabelSettings`, :ref:`LightmapGIData`, :ref:`Material`, :ref:`Mesh`, :ref:`MeshLibrary`, :ref:`MissingResource`, :ref:`MultiMesh`, :ref:`NavigationMesh`, :ref:`NavigationPolygon`, :ref:`Noise`, :ref:`Occluder3D`, :ref:`OccluderPolygon2D`, :ref:`OggPacketSequence`, :ref:`OpenXRAction`, :ref:`OpenXRActionMap`, :ref:`OpenXRActionSet`, :ref:`OpenXRInteractionProfile`, :ref:`OpenXRIPBinding`, :ref:`PackedDataContainer`, :ref:`PackedScene`, :ref:`PhysicsMaterial`, :ref:`PolygonPathFinder`, :ref:`RDShaderFile`, :ref:`RDShaderSPIRV`, :ref:`RichTextEffect`, :ref:`SceneReplicationConfig`, :ref:`Script`, :ref:`Shader`, :ref:`ShaderInclude`, :ref:`Shape2D`, :ref:`Shape3D`, :ref:`Shortcut`, :ref:`SkeletonModification2D`, :ref:`SkeletonModificationStack2D`, :ref:`SkeletonProfile`, :ref:`Skin`, :ref:`Sky`, :ref:`SpriteFrames`, :ref:`StyleBox`, :ref:`SyntaxHighlighter`, :ref:`Texture`, :ref:`Theme`, :ref:`TileMapPattern`, :ref:`TileSet`, :ref:`TileSetSource`, :ref:`Translation`, :ref:`VideoStream`, :ref:`VideoStreamPlayback`, :ref:`VisualShaderNode`, :ref:`VoxelGIData`, :ref:`World2D`, :ref:`World3D`, :ref:`X509Certificate` +**Inherited By:** :ref:`Animation`, :ref:`AnimationLibrary`, :ref:`AnimationNode`, :ref:`AnimationNodeStateMachinePlayback`, :ref:`AnimationNodeStateMachineTransition`, :ref:`AudioBusLayout`, :ref:`AudioEffect`, :ref:`AudioStream`, :ref:`BitMap`, :ref:`BoneMap`, :ref:`ButtonGroup`, :ref:`CameraAttributes`, :ref:`CryptoKey`, :ref:`Curve`, :ref:`Curve2D`, :ref:`Curve3D`, :ref:`EditorNode3DGizmoPlugin`, :ref:`EditorSettings`, :ref:`Environment`, :ref:`Font`, :ref:`GDExtension`, :ref:`GLTFAccessor`, :ref:`GLTFAnimation`, :ref:`GLTFBufferView`, :ref:`GLTFCamera`, :ref:`GLTFDocument`, :ref:`GLTFDocumentExtension`, :ref:`GLTFLight`, :ref:`GLTFMesh`, :ref:`GLTFNode`, :ref:`GLTFPhysicsBody`, :ref:`GLTFPhysicsShape`, :ref:`GLTFSkeleton`, :ref:`GLTFSkin`, :ref:`GLTFSpecGloss`, :ref:`GLTFState`, :ref:`GLTFTexture`, :ref:`GLTFTextureSampler`, :ref:`Gradient`, :ref:`Image`, :ref:`ImporterMesh`, :ref:`InputEvent`, :ref:`JSON`, :ref:`LabelSettings`, :ref:`LightmapGIData`, :ref:`Material`, :ref:`Mesh`, :ref:`MeshLibrary`, :ref:`MissingResource`, :ref:`MultiMesh`, :ref:`NavigationMesh`, :ref:`NavigationMeshSourceGeometryData3D`, :ref:`NavigationPolygon`, :ref:`Noise`, :ref:`Occluder3D`, :ref:`OccluderPolygon2D`, :ref:`OggPacketSequence`, :ref:`OpenXRAction`, :ref:`OpenXRActionMap`, :ref:`OpenXRActionSet`, :ref:`OpenXRInteractionProfile`, :ref:`OpenXRIPBinding`, :ref:`PackedDataContainer`, :ref:`PackedScene`, :ref:`PhysicsMaterial`, :ref:`PolygonPathFinder`, :ref:`RDShaderFile`, :ref:`RDShaderSPIRV`, :ref:`RichTextEffect`, :ref:`SceneReplicationConfig`, :ref:`Script`, :ref:`Shader`, :ref:`ShaderInclude`, :ref:`Shape2D`, :ref:`Shape3D`, :ref:`Shortcut`, :ref:`SkeletonModification2D`, :ref:`SkeletonModificationStack2D`, :ref:`SkeletonProfile`, :ref:`Skin`, :ref:`Sky`, :ref:`SpriteFrames`, :ref:`StyleBox`, :ref:`SyntaxHighlighter`, :ref:`Texture`, :ref:`Theme`, :ref:`TileMapPattern`, :ref:`TileSet`, :ref:`TileSetSource`, :ref:`Translation`, :ref:`VideoStream`, :ref:`VideoStreamPlayback`, :ref:`VisualShaderNode`, :ref:`VoxelGIData`, :ref:`World2D`, :ref:`World3D`, :ref:`X509Certificate` Base class for serializable objects. @@ -294,3 +294,4 @@ Sets the :ref:`resource_path` to ``path`` .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_resourceformatloader.rst b/classes/class_resourceformatloader.rst index 150ca9d0d7f5..25ba5342c9a9 100644 --- a/classes/class_resourceformatloader.rst +++ b/classes/class_resourceformatloader.rst @@ -257,3 +257,4 @@ Returns :ref:`@GlobalScope.OK` on success, or an .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_resourceformatsaver.rst b/classes/class_resourceformatsaver.rst index a55b79d327e4..e27850607dd9 100644 --- a/classes/class_resourceformatsaver.rst +++ b/classes/class_resourceformatsaver.rst @@ -118,3 +118,4 @@ Sets a new UID for the resource at the given ``path``. Returns :ref:`@GlobalScop .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_resourceimporter.rst b/classes/class_resourceimporter.rst index ff97a6b7b596..083ebaaa5010 100644 --- a/classes/class_resourceimporter.rst +++ b/classes/class_resourceimporter.rst @@ -67,3 +67,4 @@ The import order for scenes, which ensures scenes are imported *after* all other .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_resourceloader.rst b/classes/class_resourceloader.rst index 98461fa14d30..aa6327c63c98 100644 --- a/classes/class_resourceloader.rst +++ b/classes/class_resourceloader.rst @@ -326,3 +326,4 @@ Changes the behavior on missing sub-resources. The default behavior is to abort .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_resourcepreloader.rst b/classes/class_resourcepreloader.rst index 6f410f39d3a7..f815155376a4 100644 --- a/classes/class_resourcepreloader.rst +++ b/classes/class_resourcepreloader.rst @@ -128,3 +128,4 @@ Renames a resource inside the preloader from ``name`` to ``newname``. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_resourcesaver.rst b/classes/class_resourcesaver.rst index 50656783a9d3..9e1992a05bf8 100644 --- a/classes/class_resourcesaver.rst +++ b/classes/class_resourcesaver.rst @@ -31,15 +31,15 @@ Methods .. table:: :widths: auto - +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`add_resource_format_saver` **(** :ref:`ResourceFormatSaver` format_saver, :ref:`bool` at_front=false **)** | - +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedStringArray` | :ref:`get_recognized_extensions` **(** :ref:`Resource` type **)** | - +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`remove_resource_format_saver` **(** :ref:`ResourceFormatSaver` format_saver **)** | - +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Error` | :ref:`save` **(** :ref:`Resource` resource, :ref:`String` path="", :ref:`SaverFlags` flags=0 **)** | - +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +---------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`add_resource_format_saver` **(** :ref:`ResourceFormatSaver` format_saver, :ref:`bool` at_front=false **)** | + +---------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedStringArray` | :ref:`get_recognized_extensions` **(** :ref:`Resource` type **)** | + +---------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`remove_resource_format_saver` **(** :ref:`ResourceFormatSaver` format_saver **)** | + +---------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Error` | :ref:`save` **(** :ref:`Resource` resource, :ref:`String` path="", |bitfield|\<:ref:`SaverFlags`\> flags=0 **)** | + +---------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator @@ -171,7 +171,7 @@ Unregisters the given :ref:`ResourceFormatSaver`. .. rst-class:: classref-method -:ref:`Error` **save** **(** :ref:`Resource` resource, :ref:`String` path="", :ref:`SaverFlags` flags=0 **)** +:ref:`Error` **save** **(** :ref:`Resource` resource, :ref:`String` path="", |bitfield|\<:ref:`SaverFlags`\> flags=0 **)** Saves a resource to disk to the given path, using a :ref:`ResourceFormatSaver` that recognizes the resource object. If ``path`` is empty, **ResourceSaver** will try to use :ref:`Resource.resource_path`. @@ -185,3 +185,4 @@ Returns :ref:`@GlobalScope.OK` on success. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_resourceuid.rst b/classes/class_resourceuid.rst index 017cb0889a15..992407c106d4 100644 --- a/classes/class_resourceuid.rst +++ b/classes/class_resourceuid.rst @@ -185,3 +185,4 @@ Extracts the UID value from the given ``uid://`` string. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_ribbontrailmesh.rst b/classes/class_ribbontrailmesh.rst index 13989c05b14f..f4a375179948 100644 --- a/classes/class_ribbontrailmesh.rst +++ b/classes/class_ribbontrailmesh.rst @@ -198,3 +198,4 @@ The baseline size of the ribbon. The size of a particular section segment is obt .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_richtexteffect.rst b/classes/class_richtexteffect.rst index 6a24aa8e717c..632b26903573 100644 --- a/classes/class_richtexteffect.rst +++ b/classes/class_richtexteffect.rst @@ -84,3 +84,4 @@ Override this method to modify properties in ``char_fx``. The method must return .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_richtextlabel.rst b/classes/class_richtextlabel.rst index 3f45c60168cc..951282e74061 100644 --- a/classes/class_richtextlabel.rst +++ b/classes/class_richtextlabel.rst @@ -106,133 +106,133 @@ Methods .. table:: :widths: auto - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`add_image` **(** :ref:`Texture2D` image, :ref:`int` width=0, :ref:`int` height=0, :ref:`Color` color=Color(1, 1, 1, 1), :ref:`InlineAlignment` inline_align=5, :ref:`Rect2` region=Rect2(0, 0, 0, 0) **)** | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`add_text` **(** :ref:`String` text **)** | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`append_text` **(** :ref:`String` bbcode **)** | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`clear` **(** **)** | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`deselect` **(** **)** | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_character_line` **(** :ref:`int` character **)** | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_character_paragraph` **(** :ref:`int` character **)** | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_content_height` **(** **)** |const| | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_content_width` **(** **)** |const| | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_line_count` **(** **)** |const| | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`get_line_offset` **(** :ref:`int` line **)** | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PopupMenu` | :ref:`get_menu` **(** **)** |const| | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_paragraph_count` **(** **)** |const| | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`get_paragraph_offset` **(** :ref:`int` paragraph **)** | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`get_parsed_text` **(** **)** |const| | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`get_selected_text` **(** **)** |const| | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_selection_from` **(** **)** |const| | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_selection_to` **(** **)** |const| | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_total_character_count` **(** **)** |const| | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`VScrollBar` | :ref:`get_v_scroll_bar` **(** **)** | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_visible_line_count` **(** **)** |const| | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_visible_paragraph_count` **(** **)** |const| | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`install_effect` **(** :ref:`Variant` effect **)** | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_menu_visible` **(** **)** |const| | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_ready` **(** **)** |const| | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`menu_option` **(** :ref:`int` option **)** | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`newline` **(** **)** | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`parse_bbcode` **(** :ref:`String` bbcode **)** | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Dictionary` | :ref:`parse_expressions_for_values` **(** :ref:`PackedStringArray` expressions **)** | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`pop` **(** **)** | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`push_bgcolor` **(** :ref:`Color` bgcolor **)** | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`push_bold` **(** **)** | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`push_bold_italics` **(** **)** | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`push_cell` **(** **)** | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`push_color` **(** :ref:`Color` color **)** | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`push_customfx` **(** :ref:`RichTextEffect` effect, :ref:`Dictionary` env **)** | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`push_dropcap` **(** :ref:`String` string, :ref:`Font` font, :ref:`int` size, :ref:`Rect2` dropcap_margins=Rect2(0, 0, 0, 0), :ref:`Color` color=Color(1, 1, 1, 1), :ref:`int` outline_size=0, :ref:`Color` outline_color=Color(0, 0, 0, 0) **)** | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`push_fgcolor` **(** :ref:`Color` fgcolor **)** | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`push_font` **(** :ref:`Font` font, :ref:`int` font_size **)** | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`push_font_size` **(** :ref:`int` font_size **)** | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`push_hint` **(** :ref:`String` description **)** | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`push_indent` **(** :ref:`int` level **)** | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`push_italics` **(** **)** | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`push_list` **(** :ref:`int` level, :ref:`ListType` type, :ref:`bool` capitalize, :ref:`String` bullet="•" **)** | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`push_meta` **(** :ref:`Variant` data **)** | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`push_mono` **(** **)** | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`push_normal` **(** **)** | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`push_outline_color` **(** :ref:`Color` color **)** | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`push_outline_size` **(** :ref:`int` outline_size **)** | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`push_paragraph` **(** :ref:`HorizontalAlignment` alignment, :ref:`TextDirection` base_direction=0, :ref:`String` language="", :ref:`StructuredTextParser` st_parser=0, :ref:`JustificationFlag` justification_flags=163, :ref:`PackedFloat32Array` tab_stops=PackedFloat32Array() **)** | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`push_strikethrough` **(** **)** | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`push_table` **(** :ref:`int` columns, :ref:`InlineAlignment` inline_align=0, :ref:`int` align_to_row=-1 **)** | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`push_underline` **(** **)** | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`remove_paragraph` **(** :ref:`int` paragraph **)** | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`scroll_to_line` **(** :ref:`int` line **)** | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`scroll_to_paragraph` **(** :ref:`int` paragraph **)** | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`scroll_to_selection` **(** **)** | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`select_all` **(** **)** | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`set_cell_border_color` **(** :ref:`Color` color **)** | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`set_cell_padding` **(** :ref:`Rect2` padding **)** | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`set_cell_row_background_color` **(** :ref:`Color` odd_row_bg, :ref:`Color` even_row_bg **)** | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`set_cell_size_override` **(** :ref:`Vector2` min_size, :ref:`Vector2` max_size **)** | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`set_table_column_expand` **(** :ref:`int` column, :ref:`bool` expand, :ref:`int` ratio **)** | - +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`add_image` **(** :ref:`Texture2D` image, :ref:`int` width=0, :ref:`int` height=0, :ref:`Color` color=Color(1, 1, 1, 1), :ref:`InlineAlignment` inline_align=5, :ref:`Rect2` region=Rect2(0, 0, 0, 0) **)** | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`add_text` **(** :ref:`String` text **)** | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`append_text` **(** :ref:`String` bbcode **)** | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`clear` **(** **)** | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`deselect` **(** **)** | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_character_line` **(** :ref:`int` character **)** | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_character_paragraph` **(** :ref:`int` character **)** | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_content_height` **(** **)** |const| | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_content_width` **(** **)** |const| | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_line_count` **(** **)** |const| | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`get_line_offset` **(** :ref:`int` line **)** | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PopupMenu` | :ref:`get_menu` **(** **)** |const| | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_paragraph_count` **(** **)** |const| | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`get_paragraph_offset` **(** :ref:`int` paragraph **)** | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`get_parsed_text` **(** **)** |const| | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`get_selected_text` **(** **)** |const| | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_selection_from` **(** **)** |const| | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_selection_to` **(** **)** |const| | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_total_character_count` **(** **)** |const| | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`VScrollBar` | :ref:`get_v_scroll_bar` **(** **)** | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_visible_line_count` **(** **)** |const| | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_visible_paragraph_count` **(** **)** |const| | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`install_effect` **(** :ref:`Variant` effect **)** | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_menu_visible` **(** **)** |const| | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_ready` **(** **)** |const| | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`menu_option` **(** :ref:`int` option **)** | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`newline` **(** **)** | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`parse_bbcode` **(** :ref:`String` bbcode **)** | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`parse_expressions_for_values` **(** :ref:`PackedStringArray` expressions **)** | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`pop` **(** **)** | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`push_bgcolor` **(** :ref:`Color` bgcolor **)** | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`push_bold` **(** **)** | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`push_bold_italics` **(** **)** | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`push_cell` **(** **)** | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`push_color` **(** :ref:`Color` color **)** | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`push_customfx` **(** :ref:`RichTextEffect` effect, :ref:`Dictionary` env **)** | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`push_dropcap` **(** :ref:`String` string, :ref:`Font` font, :ref:`int` size, :ref:`Rect2` dropcap_margins=Rect2(0, 0, 0, 0), :ref:`Color` color=Color(1, 1, 1, 1), :ref:`int` outline_size=0, :ref:`Color` outline_color=Color(0, 0, 0, 0) **)** | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`push_fgcolor` **(** :ref:`Color` fgcolor **)** | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`push_font` **(** :ref:`Font` font, :ref:`int` font_size **)** | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`push_font_size` **(** :ref:`int` font_size **)** | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`push_hint` **(** :ref:`String` description **)** | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`push_indent` **(** :ref:`int` level **)** | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`push_italics` **(** **)** | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`push_list` **(** :ref:`int` level, :ref:`ListType` type, :ref:`bool` capitalize, :ref:`String` bullet="•" **)** | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`push_meta` **(** :ref:`Variant` data **)** | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`push_mono` **(** **)** | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`push_normal` **(** **)** | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`push_outline_color` **(** :ref:`Color` color **)** | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`push_outline_size` **(** :ref:`int` outline_size **)** | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`push_paragraph` **(** :ref:`HorizontalAlignment` alignment, :ref:`TextDirection` base_direction=0, :ref:`String` language="", :ref:`StructuredTextParser` st_parser=0, |bitfield|\<:ref:`JustificationFlag`\> justification_flags=163, :ref:`PackedFloat32Array` tab_stops=PackedFloat32Array() **)** | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`push_strikethrough` **(** **)** | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`push_table` **(** :ref:`int` columns, :ref:`InlineAlignment` inline_align=0, :ref:`int` align_to_row=-1 **)** | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`push_underline` **(** **)** | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`remove_paragraph` **(** :ref:`int` paragraph **)** | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`scroll_to_line` **(** :ref:`int` line **)** | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`scroll_to_paragraph` **(** :ref:`int` paragraph **)** | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`scroll_to_selection` **(** **)** | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`select_all` **(** **)** | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`set_cell_border_color` **(** :ref:`Color` color **)** | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`set_cell_padding` **(** :ref:`Rect2` padding **)** | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`set_cell_row_background_color` **(** :ref:`Color` odd_row_bg, :ref:`Color` even_row_bg **)** | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`set_cell_size_override` **(** :ref:`Vector2` min_size, :ref:`Vector2` max_size **)** | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`set_table_column_expand` **(** :ref:`int` column, :ref:`bool` expand, :ref:`int` ratio **)** | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-reftable-group @@ -899,7 +899,9 @@ Parses ``bbcode`` and adds tags to the tag stack as needed. void **clear** **(** **)** -Clears the tag stack and sets :ref:`text` to an empty string. +Clears the tag stack. + +\ **Note:** This method will not modify :ref:`text`, but setting :ref:`text` to an empty string also clears the stack. .. rst-class:: classref-item-separator @@ -1516,7 +1518,7 @@ Adds a ``[outline_size]`` tag to the tag stack. Overrides default text outline s .. rst-class:: classref-method -void **push_paragraph** **(** :ref:`HorizontalAlignment` alignment, :ref:`TextDirection` base_direction=0, :ref:`String` language="", :ref:`StructuredTextParser` st_parser=0, :ref:`JustificationFlag` justification_flags=163, :ref:`PackedFloat32Array` tab_stops=PackedFloat32Array() **)** +void **push_paragraph** **(** :ref:`HorizontalAlignment` alignment, :ref:`TextDirection` base_direction=0, :ref:`String` language="", :ref:`StructuredTextParser` st_parser=0, |bitfield|\<:ref:`JustificationFlag`\> justification_flags=163, :ref:`PackedFloat32Array` tab_stops=PackedFloat32Array() **)** Adds a ``[p]`` tag to the tag stack. @@ -2045,3 +2047,4 @@ The normal background for the **RichTextLabel**. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_rid.rst b/classes/class_rid.rst index 607c40960e7a..656a6476539e 100644 --- a/classes/class_rid.rst +++ b/classes/class_rid.rst @@ -210,3 +210,4 @@ Returns ``true`` if the **RID**'s ID is greater than or equal to ``right``'s ID. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_rigidbody2d.rst b/classes/class_rigidbody2d.rst index c4461121784e..38d697e03f05 100644 --- a/classes/class_rigidbody2d.rst +++ b/classes/class_rigidbody2d.rst @@ -979,3 +979,4 @@ Sets the body's velocity on the given axis. The velocity in the given vector axi .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_rigidbody3d.rst b/classes/class_rigidbody3d.rst index 917578da3d72..b85be2c0efea 100644 --- a/classes/class_rigidbody3d.rst +++ b/classes/class_rigidbody3d.rst @@ -961,3 +961,4 @@ Sets an axis velocity. The velocity in the given vector axis will be set as the .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_rootmotionview.rst b/classes/class_rootmotionview.rst index f8dd764e3123..edf76e763c61 100644 --- a/classes/class_rootmotionview.rst +++ b/classes/class_rootmotionview.rst @@ -146,3 +146,4 @@ If ``true``, the grid's points will all be on the same Y coordinate (*local* Y = .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_scenemultiplayer.rst b/classes/class_scenemultiplayer.rst index 3f20ed79059c..053fa59023c8 100644 --- a/classes/class_scenemultiplayer.rst +++ b/classes/class_scenemultiplayer.rst @@ -40,7 +40,7 @@ Properties +---------------------------------+---------------------------------------------------------------------------------------+------------------+ | :ref:`bool` | :ref:`allow_object_decoding` | ``false`` | +---------------------------------+---------------------------------------------------------------------------------------+------------------+ - | :ref:`Callable` | :ref:`auth_callback` | | + | :ref:`Callable` | :ref:`auth_callback` | ``Callable()`` | +---------------------------------+---------------------------------------------------------------------------------------+------------------+ | :ref:`float` | :ref:`auth_timeout` | ``3.0`` | +---------------------------------+---------------------------------------------------------------------------------------+------------------+ @@ -150,7 +150,7 @@ If ``true``, the MultiplayerAPI will allow encoding and decoding of object durin .. rst-class:: classref-property -:ref:`Callable` **auth_callback** +:ref:`Callable` **auth_callback** = ``Callable()`` .. rst-class:: classref-property-setget @@ -352,3 +352,4 @@ Sends the given raw ``bytes`` to a specific peer identified by ``id`` (see :ref: .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_scenereplicationconfig.rst b/classes/class_scenereplicationconfig.rst index 6e7013d7db10..ea7f3dc1976e 100644 --- a/classes/class_scenereplicationconfig.rst +++ b/classes/class_scenereplicationconfig.rst @@ -191,3 +191,4 @@ Removes the property identified by the given ``path`` from the configuration. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_scenestate.rst b/classes/class_scenestate.rst index f93881442dac..ca2aa9622850 100644 --- a/classes/class_scenestate.rst +++ b/classes/class_scenestate.rst @@ -399,3 +399,4 @@ Returns ``true`` if the node at ``idx`` is an :ref:`InstancePlaceholder` **GROUP_CALL_DEFERRED** = ``2`` -Call a group with a one-frame delay (idle frame, not physics). +Call a group at the end of the current frame (process or physics). .. _class_SceneTree_constant_GROUP_CALL_UNIQUE: @@ -475,7 +475,7 @@ void **call_group** **(** :ref:`StringName` group, :ref:`Strin Calls ``method`` on each member of the given group. You can pass arguments to ``method`` by specifying them at the end of the method call. If a node doesn't have the given method or the argument list does not match (either in count or in types), it will be skipped. -\ **Note:** :ref:`call_group` will call methods immediately on all members at once, which can cause stuttering if an expensive method is called on lots of members. To wait for one frame after :ref:`call_group` was called, use :ref:`call_group_flags` with the :ref:`GROUP_CALL_DEFERRED` flag. +\ **Note:** :ref:`call_group` will call methods immediately on all members at once, which can cause stuttering if an expensive method is called on lots of members. .. rst-class:: classref-item-separator @@ -494,7 +494,7 @@ Calls ``method`` on each member of the given group, respecting the given :ref:`G # Call the method in a deferred manner and in reverse order. get_tree().call_group_flags(SceneTree.GROUP_CALL_DEFERRED | SceneTree.GROUP_CALL_REVERSE) -\ **Note:** Group call flags are used to control the method calling behavior. By default, methods will be called immediately in a way similar to :ref:`call_group`. However, if the :ref:`GROUP_CALL_DEFERRED` flag is present in the ``flags`` argument, methods will be called with a one-frame delay in a way similar to :ref:`Object.set_deferred`. +\ **Note:** Group call flags are used to control the method calling behavior. By default, methods will be called immediately in a way similar to :ref:`call_group`. However, if the :ref:`GROUP_CALL_DEFERRED` flag is present in the ``flags`` argument, methods will be called at the end of the frame in a way similar to :ref:`Object.set_deferred`. .. rst-class:: classref-item-separator @@ -510,7 +510,7 @@ Changes the running scene to the one at the given ``path``, after loading it int Returns :ref:`@GlobalScope.OK` on success, :ref:`@GlobalScope.ERR_CANT_OPEN` if the ``path`` cannot be loaded into a :ref:`PackedScene`, or :ref:`@GlobalScope.ERR_CANT_CREATE` if that scene cannot be instantiated. -\ **Note:** The scene change is deferred, which means that the new scene node is added on the next idle frame. This ensures that both scenes are never loaded at the same time, which can exhaust system resources if the scenes are too large or if running in a memory constrained environment. As such, you won't be able to access the loaded scene immediately after the :ref:`change_scene_to_file` call. +\ **Note:** The scene change is deferred, which means that the new scene node is added to the tree at the end of the frame. This ensures that both scenes aren't running at the same time, while still freeing the previous scene in a safe way similar to :ref:`Node.queue_free`. As such, you won't be able to access the loaded scene immediately after the :ref:`change_scene_to_file` call. .. rst-class:: classref-item-separator @@ -526,7 +526,7 @@ Changes the running scene to a new instance of the given :ref:`PackedScene` on success, :ref:`@GlobalScope.ERR_CANT_CREATE` if the scene cannot be instantiated, or :ref:`@GlobalScope.ERR_INVALID_PARAMETER` if the scene is invalid. -\ **Note:** The scene change is deferred, which means that the new scene node is added on the next idle frame. You won't be able to access it immediately after the :ref:`change_scene_to_packed` call. +\ **Note:** The scene change is deferred, which means that the new scene node is added to the tree at the end of the frame. You won't be able to access it immediately after the :ref:`change_scene_to_packed` call. .. rst-class:: classref-item-separator @@ -538,7 +538,7 @@ Returns :ref:`@GlobalScope.OK` on success, :ref: :ref:`SceneTreeTimer` **create_timer** **(** :ref:`float` time_sec, :ref:`bool` process_always=true, :ref:`bool` process_in_physics=false, :ref:`bool` ignore_time_scale=false **)** -Returns a :ref:`SceneTreeTimer` which will :ref:`SceneTreeTimer.timeout` after the given time in seconds elapsed in this **SceneTree**. +Returns a :ref:`SceneTreeTimer` which will emit :ref:`SceneTreeTimer.timeout` after the given time in seconds elapsed in this **SceneTree**. If ``process_always`` is set to ``false``, pausing the **SceneTree** will also pause the timer. @@ -571,6 +571,8 @@ Commonly used to create a one-shot delay timer as in the following example: The timer will be automatically freed after its time elapses. +\ **Note:** The timer is processed after all of the nodes in the current frame, i.e. node's :ref:`Node._process` method would be called before the timer (or :ref:`Node._physics_process` if ``process_in_physics`` is set to ``true``). + .. rst-class:: classref-item-separator ---- @@ -679,7 +681,7 @@ void **notify_group** **(** :ref:`StringName` group, :ref:`int Sends the given notification to all members of the ``group``. -\ **Note:** :ref:`notify_group` will immediately notify all members at once, which can cause stuttering if an expensive method is called as a result of sending the notification lots of members. To wait for one frame, use :ref:`notify_group_flags` with the :ref:`GROUP_CALL_DEFERRED` flag. +\ **Note:** :ref:`notify_group` will immediately notify all members at once, which can cause stuttering if an expensive method is called as a result of sending the notification to lots of members. .. rst-class:: classref-item-separator @@ -693,7 +695,7 @@ void **notify_group_flags** **(** :ref:`int` call_flags, :ref:`String Sends the given notification to all members of the ``group``, respecting the given :ref:`GroupCallFlags`. -\ **Note:** Group call flags are used to control the notification sending behavior. By default, notifications will be sent immediately in a way similar to :ref:`notify_group`. However, if the :ref:`GROUP_CALL_DEFERRED` flag is present in the ``call_flags`` argument, notifications will be sent with a one-frame delay in a way similar to using ``Object.call_deferred("notification", ...)``. +\ **Note:** Group call flags are used to control the notification sending behavior. By default, notifications will be sent immediately in a way similar to :ref:`notify_group`. However, if the :ref:`GROUP_CALL_DEFERRED` flag is present in the ``call_flags`` argument, notifications will be sent at the end of the current frame in a way similar to using ``Object.call_deferred("notification", ...)``. .. rst-class:: classref-item-separator @@ -705,7 +707,7 @@ Sends the given notification to all members of the ``group``, respecting the giv void **queue_delete** **(** :ref:`Object` obj **)** -Queues the given object for deletion, delaying the call to :ref:`Object.free` to after the current frame. +Queues the given object for deletion, delaying the call to :ref:`Object.free` to the end of the current frame. .. rst-class:: classref-item-separator @@ -751,7 +753,7 @@ void **set_group** **(** :ref:`StringName` group, :ref:`String Sets the given ``property`` to ``value`` on all members of the given group. -\ **Note:** :ref:`set_group` will set the property immediately on all members at once, which can cause stuttering if a property with an expensive setter is set on lots of members. To wait for one frame, use :ref:`set_group_flags` with the :ref:`GROUP_CALL_DEFERRED` flag. +\ **Note:** :ref:`set_group` will set the property immediately on all members at once, which can cause stuttering if a property with an expensive setter is set on lots of members. .. rst-class:: classref-item-separator @@ -765,7 +767,7 @@ void **set_group_flags** **(** :ref:`int` call_flags, :ref:`StringNam Sets the given ``property`` to ``value`` on all members of the given group, respecting the given :ref:`GroupCallFlags`. -\ **Note:** Group call flags are used to control the property setting behavior. By default, properties will be set immediately in a way similar to :ref:`set_group`. However, if the :ref:`GROUP_CALL_DEFERRED` flag is present in the ``call_flags`` argument, properties will be set with a one-frame delay in a way similar to :ref:`Object.call_deferred`. +\ **Note:** Group call flags are used to control the property setting behavior. By default, properties will be set immediately in a way similar to :ref:`set_group`. However, if the :ref:`GROUP_CALL_DEFERRED` flag is present in the ``call_flags`` argument, properties will be set at the end of the frame in a way similar to :ref:`Object.call_deferred`. .. rst-class:: classref-item-separator @@ -797,3 +799,4 @@ If a current scene is loaded, calling this method will unload it. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_scenetreetimer.rst b/classes/class_scenetreetimer.rst index b79133f1d574..f0ad4101c19e 100644 --- a/classes/class_scenetreetimer.rst +++ b/classes/class_scenetreetimer.rst @@ -46,6 +46,8 @@ As opposed to :ref:`Timer`, it does not require the instantiation o The timer will be dereferenced after its time elapses. To preserve the timer, you can keep a reference to it. See :ref:`RefCounted`. +\ **Note:** The timer is processed after all of the nodes in the current frame, i.e. node's :ref:`Node._process` method would be called before the timer (or :ref:`Node._physics_process` if ``process_in_physics`` in :ref:`SceneTree.create_timer` has been set to ``true``). + .. rst-class:: classref-reftable-group Properties @@ -103,3 +105,4 @@ The time remaining (in seconds). .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_script.rst b/classes/class_script.rst index 2fbf956fa34f..86ed908e84dc 100644 --- a/classes/class_script.rst +++ b/classes/class_script.rst @@ -271,3 +271,4 @@ Reloads the script's class implementation. Returns an error code. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_scriptcreatedialog.rst b/classes/class_scriptcreatedialog.rst index 84f396767ee0..68880c39dae4 100644 --- a/classes/class_scriptcreatedialog.rst +++ b/classes/class_scriptcreatedialog.rst @@ -112,3 +112,4 @@ Prefills required fields to configure the ScriptCreateDialog for use. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_scripteditor.rst b/classes/class_scripteditor.rst index 14a36a4e8be5..164f44009fa6 100644 --- a/classes/class_scripteditor.rst +++ b/classes/class_scripteditor.rst @@ -189,3 +189,4 @@ Unregisters the :ref:`EditorSyntaxHighlighter` fr .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_scripteditorbase.rst b/classes/class_scripteditorbase.rst index a6d32bce5777..e9d2508ddd4d 100644 --- a/classes/class_scripteditorbase.rst +++ b/classes/class_scripteditorbase.rst @@ -183,3 +183,4 @@ Returns the underlying :ref:`Control` used for editing scripts. F .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_scriptextension.rst b/classes/class_scriptextension.rst index e3f5baf77968..fd62ff59f44a 100644 --- a/classes/class_scriptextension.rst +++ b/classes/class_scriptextension.rst @@ -549,3 +549,4 @@ void **_update_exports** **(** **)** |virtual| .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_scriptlanguage.rst b/classes/class_scriptlanguage.rst index 77abe70e1452..ba55ef0bf348 100644 --- a/classes/class_scriptlanguage.rst +++ b/classes/class_scriptlanguage.rst @@ -24,3 +24,4 @@ ScriptLanguage .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_scriptlanguageextension.rst b/classes/class_scriptlanguageextension.rst index b76b8301419e..4e948156ed1f 100644 --- a/classes/class_scriptlanguageextension.rst +++ b/classes/class_scriptlanguageextension.rst @@ -1136,3 +1136,4 @@ void **_thread_exit** **(** **)** |virtual| .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_scrollbar.rst b/classes/class_scrollbar.rst index 67a23780953f..a21a383fc362 100644 --- a/classes/class_scrollbar.rst +++ b/classes/class_scrollbar.rst @@ -82,3 +82,4 @@ Overrides the step used when clicking increment and decrement buttons or when us .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_scrollcontainer.rst b/classes/class_scrollcontainer.rst index 3d6eaf5656c2..235a264b1995 100644 --- a/classes/class_scrollcontainer.rst +++ b/classes/class_scrollcontainer.rst @@ -393,3 +393,4 @@ The background :ref:`StyleBox` of the **ScrollContainer**. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_segmentshape2d.rst b/classes/class_segmentshape2d.rst index 2111fe1edb38..43f4f76a0803 100644 --- a/classes/class_segmentshape2d.rst +++ b/classes/class_segmentshape2d.rst @@ -80,3 +80,4 @@ The segment's second point position. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_semaphore.rst b/classes/class_semaphore.rst index a91daee5d966..58a7cd0f58ab 100644 --- a/classes/class_semaphore.rst +++ b/classes/class_semaphore.rst @@ -101,3 +101,4 @@ Waits for the **Semaphore**, if its value is zero, blocks until non-zero. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_separationrayshape2d.rst b/classes/class_separationrayshape2d.rst index a066de816a14..d4c3763411a5 100644 --- a/classes/class_separationrayshape2d.rst +++ b/classes/class_separationrayshape2d.rst @@ -82,3 +82,4 @@ If ``true``, the shape can return the correct normal and separate in any directi .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_separationrayshape3d.rst b/classes/class_separationrayshape3d.rst index 5071c20dc8c3..235fbe169818 100644 --- a/classes/class_separationrayshape3d.rst +++ b/classes/class_separationrayshape3d.rst @@ -82,3 +82,4 @@ If ``true``, the shape can return the correct normal and separate in any directi .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_separator.rst b/classes/class_separator.rst index 19265910c03b..e9e785349b59 100644 --- a/classes/class_separator.rst +++ b/classes/class_separator.rst @@ -29,3 +29,4 @@ Abstract base class for separators, used for separating other controls. **Separa .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_shader.rst b/classes/class_shader.rst index 9f63fb4d99bc..5fe28caff6e5 100644 --- a/classes/class_shader.rst +++ b/classes/class_shader.rst @@ -14,14 +14,16 @@ Shader **Inherited By:** :ref:`VisualShader` -A custom shader program. +A shader implemented in the Godot shading language. .. rst-class:: classref-introduction-group Description ----------- -This class allows you to define a custom shader program that can be used by a :ref:`ShaderMaterial`. Shaders allow you to write your own custom behavior for rendering objects or updating particle information. For a detailed explanation and usage, please see the tutorials linked below. +A custom shader program implemented in the Godot shading language, saved with the ``.gdshader`` extension. + +This class is used by a :ref:`ShaderMaterial` and allows you to write your own custom behavior for rendering visual items or updating particle information. For a detailed explanation and usage, please see the tutorials linked below. .. rst-class:: classref-introduction-group @@ -168,7 +170,7 @@ Returns the texture that is set as default for the specified parameter. :ref:`Mode` **get_mode** **(** **)** |const| -Returns the shader mode for the shader, either :ref:`MODE_CANVAS_ITEM`, :ref:`MODE_SPATIAL` or :ref:`MODE_PARTICLES`. +Returns the shader mode for the shader. .. rst-class:: classref-item-separator @@ -206,3 +208,4 @@ Sets the default texture to be used with a texture uniform. The default is used .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_shaderglobalsoverride.rst b/classes/class_shaderglobalsoverride.rst index 7f21037a0852..84032084e1bc 100644 --- a/classes/class_shaderglobalsoverride.rst +++ b/classes/class_shaderglobalsoverride.rst @@ -31,3 +31,4 @@ Similar to how a :ref:`WorldEnvironment` node can be use .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_shaderinclude.rst b/classes/class_shaderinclude.rst index d7fc547cd72f..476aa7fbac99 100644 --- a/classes/class_shaderinclude.rst +++ b/classes/class_shaderinclude.rst @@ -12,9 +12,21 @@ ShaderInclude **Inherits:** :ref:`Resource` **<** :ref:`RefCounted` **<** :ref:`Object` -.. container:: contribute +A snippet of shader code to be included in a :ref:`Shader` with ``#include``. - There is currently no description for this class. Please help us by :ref:`contributing one `! +.. rst-class:: classref-introduction-group + +Description +----------- + +A shader include file, saved with the ``.gdshaderinc`` extension. This class allows you to define a custom shader snippet that can be included in a :ref:`Shader` by using the preprocessor directive ``#include``, followed by the file path (e.g. ``#include "res://shader_lib.gdshaderinc"``). The snippet doesn't have to be a valid shader on its own. + +.. rst-class:: classref-introduction-group + +Tutorials +--------- + +- :doc:`Shader preprocessor <../tutorials/shaders/shader_reference/shader_preprocessor>` .. rst-class:: classref-reftable-group @@ -48,9 +60,7 @@ Property Descriptions - void **set_code** **(** :ref:`String` value **)** - :ref:`String` **get_code** **(** **)** -.. container:: contribute - - There is currently no description for this property. Please help us by :ref:`contributing one `! +Returns the code of the shader include file. The returned text is what the user has written, not the full generated code used internally. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)` .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)` @@ -58,3 +68,4 @@ Property Descriptions .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_shadermaterial.rst b/classes/class_shadermaterial.rst index 8032264c3f17..d686fdeb9e2e 100644 --- a/classes/class_shadermaterial.rst +++ b/classes/class_shadermaterial.rst @@ -115,3 +115,4 @@ Changes the value set for this material of a uniform in the shader. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_shape2d.rst b/classes/class_shape2d.rst index ab2b622ba8a2..c0c9c2c379a5 100644 --- a/classes/class_shape2d.rst +++ b/classes/class_shape2d.rst @@ -189,3 +189,4 @@ Returns a :ref:`Rect2` representing the shapes boundary. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_shape3d.rst b/classes/class_shape3d.rst index a952f717f1f4..eaad3974c95a 100644 --- a/classes/class_shape3d.rst +++ b/classes/class_shape3d.rst @@ -124,3 +124,4 @@ Returns the :ref:`ArrayMesh` used to draw the debug collision f .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_shapecast2d.rst b/classes/class_shapecast2d.rst index 1c7dcc7cb16c..570813d25862 100644 --- a/classes/class_shapecast2d.rst +++ b/classes/class_shapecast2d.rst @@ -488,3 +488,4 @@ Based on ``value``, enables or disables the specified layer in the :ref:`collisi .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_shapecast3d.rst b/classes/class_shapecast3d.rst index 147b53d86ac5..1916538052a5 100644 --- a/classes/class_shapecast3d.rst +++ b/classes/class_shapecast3d.rst @@ -523,3 +523,4 @@ Based on ``value``, enables or disables the specified layer in the :ref:`collisi .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_shortcut.rst b/classes/class_shortcut.rst index 7f89fb2b81cd..2b6275b6b7b4 100644 --- a/classes/class_shortcut.rst +++ b/classes/class_shortcut.rst @@ -122,3 +122,4 @@ Returns whether any :ref:`InputEvent` in :ref:`events` a .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_skeleton3d.rst b/classes/class_skeleton3d.rst index 27ff7f69e47b..adacecb9f189 100644 --- a/classes/class_skeleton3d.rst +++ b/classes/class_skeleton3d.rst @@ -807,3 +807,4 @@ Unparents the bone at ``bone_idx`` and sets its rest position to that of its par .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_skeletonik3d.rst b/classes/class_skeletonik3d.rst index 7d2b460ab73b..1f4643383e89 100644 --- a/classes/class_skeletonik3d.rst +++ b/classes/class_skeletonik3d.rst @@ -332,3 +332,4 @@ Stops applying IK effects on each frame to the :ref:`Skeleton3D` t .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_skeletonmodification2dtwoboneik.rst b/classes/class_skeletonmodification2dtwoboneik.rst index c3a0e0134b5e..c9be46b684e0 100644 --- a/classes/class_skeletonmodification2dtwoboneik.rst +++ b/classes/class_skeletonmodification2dtwoboneik.rst @@ -247,3 +247,4 @@ Sets the index of the :ref:`Bone2D` node that is being used as the .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_skeletonmodificationstack2d.rst b/classes/class_skeletonmodificationstack2d.rst index ef537ce44172..9c1d84d746c8 100644 --- a/classes/class_skeletonmodificationstack2d.rst +++ b/classes/class_skeletonmodificationstack2d.rst @@ -246,3 +246,4 @@ Sets up the modification stack so it can execute. This function should be called .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_skeletonprofile.rst b/classes/class_skeletonprofile.rst index 98629effd866..0080d0a15251 100644 --- a/classes/class_skeletonprofile.rst +++ b/classes/class_skeletonprofile.rst @@ -482,3 +482,4 @@ Sets the texture of the group at ``group_idx`` that will be the drawing group ba .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_skeletonprofilehumanoid.rst b/classes/class_skeletonprofilehumanoid.rst index bc54fab548f6..eb65d0cc9b73 100644 --- a/classes/class_skeletonprofilehumanoid.rst +++ b/classes/class_skeletonprofilehumanoid.rst @@ -52,3 +52,4 @@ Properties .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_skin.rst b/classes/class_skin.rst index 6cbb035f04bc..298fa7e6b07d 100644 --- a/classes/class_skin.rst +++ b/classes/class_skin.rst @@ -213,3 +213,4 @@ void **set_bind_pose** **(** :ref:`int` bind_index, :ref:`Transform3D .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_skinreference.rst b/classes/class_skinreference.rst index 85eaf5b25c0f..d6b8440abeff 100644 --- a/classes/class_skinreference.rst +++ b/classes/class_skinreference.rst @@ -69,3 +69,4 @@ Method Descriptions .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_sky.rst b/classes/class_sky.rst index 84bf66aa9207..97eccda2b311 100644 --- a/classes/class_sky.rst +++ b/classes/class_sky.rst @@ -226,3 +226,4 @@ See :ref:`RadianceSize` constants for values. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_slider.rst b/classes/class_slider.rst index 789da27bf5fc..1496f3bad8ac 100644 --- a/classes/class_slider.rst +++ b/classes/class_slider.rst @@ -153,3 +153,4 @@ If ``true``, the slider will display ticks for minimum and maximum values. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_sliderjoint3d.rst b/classes/class_sliderjoint3d.rst index db4b179811c7..b1bb94c0b05c 100644 --- a/classes/class_sliderjoint3d.rst +++ b/classes/class_sliderjoint3d.rst @@ -712,3 +712,4 @@ void **set_param** **(** :ref:`Param` param, :ref:`flo .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_softbody3d.rst b/classes/class_softbody3d.rst index 59f3d9905427..12069bfcbb53 100644 --- a/classes/class_softbody3d.rst +++ b/classes/class_softbody3d.rst @@ -476,3 +476,4 @@ Sets the pinned state of a surface vertex. When set to ``true``, the optional `` .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_spheremesh.rst b/classes/class_spheremesh.rst index 8aa0d40f6ae5..c64636372d4b 100644 --- a/classes/class_spheremesh.rst +++ b/classes/class_spheremesh.rst @@ -139,3 +139,4 @@ Number of segments along the height of the sphere. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_sphereoccluder3d.rst b/classes/class_sphereoccluder3d.rst index abfb7a3e1c7b..a2548c81ca80 100644 --- a/classes/class_sphereoccluder3d.rst +++ b/classes/class_sphereoccluder3d.rst @@ -63,3 +63,4 @@ The sphere's radius in 3D units. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_sphereshape3d.rst b/classes/class_sphereshape3d.rst index ecd9f9b89e39..4a1b4c87434f 100644 --- a/classes/class_sphereshape3d.rst +++ b/classes/class_sphereshape3d.rst @@ -70,3 +70,4 @@ The sphere's radius. The shape's diameter is double the radius. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_spinbox.rst b/classes/class_spinbox.rst index 0b0623414510..0537355a96bd 100644 --- a/classes/class_spinbox.rst +++ b/classes/class_spinbox.rst @@ -71,7 +71,7 @@ Properties +-------------------------------------------------------------------+------------------------------------------------------------------------------+------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`select_all_on_focus` | ``false`` | +-------------------------------------------------------------------+------------------------------------------------------------------------------+------------------------------------------------------------------------------+ - | :ref:`SizeFlags` | size_flags_vertical | ``1`` (overrides :ref:`Control`) | + | |bitfield|\<:ref:`SizeFlags`\> | size_flags_vertical | ``1`` (overrides :ref:`Control`) | +-------------------------------------------------------------------+------------------------------------------------------------------------------+------------------------------------------------------------------------------+ | :ref:`float` | step | ``1.0`` (overrides :ref:`Range`) | +-------------------------------------------------------------------+------------------------------------------------------------------------------+------------------------------------------------------------------------------+ @@ -284,3 +284,4 @@ Sets a custom :ref:`Texture2D` for up and down arrows of the ** .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_splitcontainer.rst b/classes/class_splitcontainer.rst index 8d445357483e..fda75fd3d4cc 100644 --- a/classes/class_splitcontainer.rst +++ b/classes/class_splitcontainer.rst @@ -299,3 +299,4 @@ The icon used for the grabber drawn in the middle area when :ref:`vertical` from the list of :ref:`PhysicsBody3D` **get_slice** **(** :ref:`String` delimiter, :ref:`int` slice **)** |const| -Splits the string using a ``delimiter`` and returns the substring at index ``slice``. Returns an empty string if the ``slice`` does not exist. +Splits the string using a ``delimiter`` and returns the substring at index ``slice``. Returns the original string if ``delimiter`` does not occur in the string. Returns an empty string if the ``slice`` does not exist. This is faster than :ref:`split`, if you only need one substring. @@ -2211,3 +2211,4 @@ Returns a new **String** that only contains the character at ``index``. Indices .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_stringname.rst b/classes/class_stringname.rst index 1024e40f3bdf..bbc09ef6a4df 100644 --- a/classes/class_stringname.rst +++ b/classes/class_stringname.rst @@ -2033,3 +2033,4 @@ Returns ``true`` if the left **StringName**'s pointer comes after ``right`` or i .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_stylebox.rst b/classes/class_stylebox.rst index db4e43a39e61..093b43c1086a 100644 --- a/classes/class_stylebox.rst +++ b/classes/class_stylebox.rst @@ -341,3 +341,4 @@ Test a position in a rectangle, return whether it passes the mask test. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_styleboxempty.rst b/classes/class_styleboxempty.rst index 4ffdb57530d0..3c0255d0ad22 100644 --- a/classes/class_styleboxempty.rst +++ b/classes/class_styleboxempty.rst @@ -27,3 +27,4 @@ An empty :ref:`StyleBox` that can be used to display nothing ins .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_styleboxflat.rst b/classes/class_styleboxflat.rst index 2bf8decb108a..36a65dcb7094 100644 --- a/classes/class_styleboxflat.rst +++ b/classes/class_styleboxflat.rst @@ -669,3 +669,4 @@ Sets the expand margin to ``size`` pixels for all sides. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_styleboxline.rst b/classes/class_styleboxline.rst index eeb3aef1487c..6e39da7d8c94 100644 --- a/classes/class_styleboxline.rst +++ b/classes/class_styleboxline.rst @@ -137,3 +137,4 @@ If ``true``, the line will be vertical. If ``false``, the line will be horizonta .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_styleboxtexture.rst b/classes/class_styleboxtexture.rst index e8697dbd364d..8e8749cedc2d 100644 --- a/classes/class_styleboxtexture.rst +++ b/classes/class_styleboxtexture.rst @@ -466,3 +466,4 @@ Sets the margin to ``size`` pixels for all sides. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_subviewport.rst b/classes/class_subviewport.rst index 0977be29c90e..890a7a73acb8 100644 --- a/classes/class_subviewport.rst +++ b/classes/class_subviewport.rst @@ -253,3 +253,4 @@ If ``true``, the 2D size override affects stretch as well. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_subviewportcontainer.rst b/classes/class_subviewportcontainer.rst index 664f4b2bcf07..3ef8a3d3c3f1 100644 --- a/classes/class_subviewportcontainer.rst +++ b/classes/class_subviewportcontainer.rst @@ -90,3 +90,4 @@ For example, a 1280×720 sub-viewport with :ref:`stretch_shrink` area. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_tcpserver.rst b/classes/class_tcpserver.rst index 39422b6d7421..7f52bfe32a63 100644 --- a/classes/class_tcpserver.rst +++ b/classes/class_tcpserver.rst @@ -134,3 +134,4 @@ If a connection is available, returns a StreamPeerTCP with the connection. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_textedit.rst b/classes/class_textedit.rst index 9697448eceeb..20f3b9b670b9 100644 --- a/classes/class_textedit.rst +++ b/classes/class_textedit.rst @@ -35,6 +35,8 @@ Properties .. table:: :widths: auto + +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`AutowrapMode` | :ref:`autowrap_mode` | ``3`` | +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`caret_blink` | ``false`` | +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ @@ -1032,6 +1034,23 @@ Custom draw. Property Descriptions --------------------- +.. _class_TextEdit_property_autowrap_mode: + +.. rst-class:: classref-property + +:ref:`AutowrapMode` **autowrap_mode** = ``3`` + +.. rst-class:: classref-property-setget + +- void **set_autowrap_mode** **(** :ref:`AutowrapMode` value **)** +- :ref:`AutowrapMode` **get_autowrap_mode** **(** **)** + +If :ref:`wrap_mode` is set to :ref:`LINE_WRAPPING_BOUNDARY`, sets text wrapping mode. To see how each mode behaves, see :ref:`AutowrapMode`. + +.. rst-class:: classref-item-separator + +---- + .. _class_TextEdit_property_caret_blink: .. rst-class:: classref-property @@ -3712,3 +3731,4 @@ Sets the :ref:`StyleBox` of this **TextEdit** when :ref:`editabl .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_textline.rst b/classes/class_textline.rst index 5876466ca6cb..f9c7092a718e 100644 --- a/classes/class_textline.rst +++ b/classes/class_textline.rst @@ -29,23 +29,23 @@ Properties .. table:: :widths: auto - +-------------------------------------------------------------------+-----------------------------------------------------------------------------+-----------+ - | :ref:`HorizontalAlignment` | :ref:`alignment` | ``0`` | - +-------------------------------------------------------------------+-----------------------------------------------------------------------------+-----------+ - | :ref:`Direction` | :ref:`direction` | ``0`` | - +-------------------------------------------------------------------+-----------------------------------------------------------------------------+-----------+ - | :ref:`JustificationFlag` | :ref:`flags` | ``3`` | - +-------------------------------------------------------------------+-----------------------------------------------------------------------------+-----------+ - | :ref:`Orientation` | :ref:`orientation` | ``0`` | - +-------------------------------------------------------------------+-----------------------------------------------------------------------------+-----------+ - | :ref:`bool` | :ref:`preserve_control` | ``false`` | - +-------------------------------------------------------------------+-----------------------------------------------------------------------------+-----------+ - | :ref:`bool` | :ref:`preserve_invalid` | ``true`` | - +-------------------------------------------------------------------+-----------------------------------------------------------------------------+-----------+ - | :ref:`OverrunBehavior` | :ref:`text_overrun_behavior` | ``3`` | - +-------------------------------------------------------------------+-----------------------------------------------------------------------------+-----------+ - | :ref:`float` | :ref:`width` | ``-1.0`` | - +-------------------------------------------------------------------+-----------------------------------------------------------------------------+-----------+ + +---------------------------------------------------------------------------+-----------------------------------------------------------------------------+-----------+ + | :ref:`HorizontalAlignment` | :ref:`alignment` | ``0`` | + +---------------------------------------------------------------------------+-----------------------------------------------------------------------------+-----------+ + | :ref:`Direction` | :ref:`direction` | ``0`` | + +---------------------------------------------------------------------------+-----------------------------------------------------------------------------+-----------+ + | |bitfield|\<:ref:`JustificationFlag`\> | :ref:`flags` | ``3`` | + +---------------------------------------------------------------------------+-----------------------------------------------------------------------------+-----------+ + | :ref:`Orientation` | :ref:`orientation` | ``0`` | + +---------------------------------------------------------------------------+-----------------------------------------------------------------------------+-----------+ + | :ref:`bool` | :ref:`preserve_control` | ``false`` | + +---------------------------------------------------------------------------+-----------------------------------------------------------------------------+-----------+ + | :ref:`bool` | :ref:`preserve_invalid` | ``true`` | + +---------------------------------------------------------------------------+-----------------------------------------------------------------------------+-----------+ + | :ref:`OverrunBehavior` | :ref:`text_overrun_behavior` | ``3`` | + +---------------------------------------------------------------------------+-----------------------------------------------------------------------------+-----------+ + | :ref:`float` | :ref:`width` | ``-1.0`` | + +---------------------------------------------------------------------------+-----------------------------------------------------------------------------+-----------+ .. rst-class:: classref-reftable-group @@ -140,12 +140,12 @@ Text writing direction. .. rst-class:: classref-property -:ref:`JustificationFlag` **flags** = ``3`` +|bitfield|\<:ref:`JustificationFlag`\> **flags** = ``3`` .. rst-class:: classref-property-setget -- void **set_flags** **(** :ref:`JustificationFlag` value **)** -- :ref:`JustificationFlag` **get_flags** **(** **)** +- void **set_flags** **(** |bitfield|\<:ref:`JustificationFlag`\> value **)** +- |bitfield|\<:ref:`JustificationFlag`\> **get_flags** **(** **)** Line alignment rules. For more info see :ref:`TextServer`. @@ -463,3 +463,4 @@ Aligns text to the given tab-stops. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_textmesh.rst b/classes/class_textmesh.rst index c6f8ecd927de..685512b9fead 100644 --- a/classes/class_textmesh.rst +++ b/classes/class_textmesh.rst @@ -33,43 +33,43 @@ Properties .. table:: :widths: auto - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------+ - | :ref:`AutowrapMode` | :ref:`autowrap_mode` | ``0`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------+ - | :ref:`float` | :ref:`curve_step` | ``0.5`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------+ - | :ref:`float` | :ref:`depth` | ``0.05`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------+ - | :ref:`Font` | :ref:`font` | | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------+ - | :ref:`int` | :ref:`font_size` | ``16`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------+ - | :ref:`HorizontalAlignment` | :ref:`horizontal_alignment` | ``1`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------+ - | :ref:`JustificationFlag` | :ref:`justification_flags` | ``163`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------+ - | :ref:`String` | :ref:`language` | ``""`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------+ - | :ref:`float` | :ref:`line_spacing` | ``0.0`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------+ - | :ref:`Vector2` | :ref:`offset` | ``Vector2(0, 0)`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------+ - | :ref:`float` | :ref:`pixel_size` | ``0.01`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------+ - | :ref:`StructuredTextParser` | :ref:`structured_text_bidi_override` | ``0`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------+ - | :ref:`Array` | :ref:`structured_text_bidi_override_options` | ``[]`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------+ - | :ref:`String` | :ref:`text` | ``""`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------+ - | :ref:`Direction` | :ref:`text_direction` | ``0`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------+ - | :ref:`bool` | :ref:`uppercase` | ``false`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------+ - | :ref:`VerticalAlignment` | :ref:`vertical_alignment` | ``1`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------+ - | :ref:`float` | :ref:`width` | ``500.0`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------+ + +---------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------+ + | :ref:`AutowrapMode` | :ref:`autowrap_mode` | ``0`` | + +---------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------+ + | :ref:`float` | :ref:`curve_step` | ``0.5`` | + +---------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------+ + | :ref:`float` | :ref:`depth` | ``0.05`` | + +---------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------+ + | :ref:`Font` | :ref:`font` | | + +---------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------+ + | :ref:`int` | :ref:`font_size` | ``16`` | + +---------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------+ + | :ref:`HorizontalAlignment` | :ref:`horizontal_alignment` | ``1`` | + +---------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------+ + | |bitfield|\<:ref:`JustificationFlag`\> | :ref:`justification_flags` | ``163`` | + +---------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------+ + | :ref:`String` | :ref:`language` | ``""`` | + +---------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------+ + | :ref:`float` | :ref:`line_spacing` | ``0.0`` | + +---------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------+ + | :ref:`Vector2` | :ref:`offset` | ``Vector2(0, 0)`` | + +---------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------+ + | :ref:`float` | :ref:`pixel_size` | ``0.01`` | + +---------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------+ + | :ref:`StructuredTextParser` | :ref:`structured_text_bidi_override` | ``0`` | + +---------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------+ + | :ref:`Array` | :ref:`structured_text_bidi_override_options` | ``[]`` | + +---------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------+ + | :ref:`String` | :ref:`text` | ``""`` | + +---------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------+ + | :ref:`Direction` | :ref:`text_direction` | ``0`` | + +---------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------+ + | :ref:`bool` | :ref:`uppercase` | ``false`` | + +---------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------+ + | :ref:`VerticalAlignment` | :ref:`vertical_alignment` | ``1`` | + +---------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------+ + | :ref:`float` | :ref:`width` | ``500.0`` | + +---------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------+ .. rst-class:: classref-section-separator @@ -186,12 +186,12 @@ Controls the text's horizontal alignment. Supports left, center, right, and fill .. rst-class:: classref-property -:ref:`JustificationFlag` **justification_flags** = ``163`` +|bitfield|\<:ref:`JustificationFlag`\> **justification_flags** = ``163`` .. rst-class:: classref-property-setget -- void **set_justification_flags** **(** :ref:`JustificationFlag` value **)** -- :ref:`JustificationFlag` **get_justification_flags** **(** **)** +- void **set_justification_flags** **(** |bitfield|\<:ref:`JustificationFlag`\> value **)** +- |bitfield|\<:ref:`JustificationFlag`\> **get_justification_flags** **(** **)** Line fill alignment rules. For more info see :ref:`JustificationFlag`. @@ -388,3 +388,4 @@ Text width (in pixels), used for fill alignment. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_textparagraph.rst b/classes/class_textparagraph.rst index 4e70e9f294ea..a549c5f1cf32 100644 --- a/classes/class_textparagraph.rst +++ b/classes/class_textparagraph.rst @@ -29,29 +29,29 @@ Properties .. table:: :widths: auto - +-------------------------------------------------------------------+----------------------------------------------------------------------------------+-----------+ - | :ref:`HorizontalAlignment` | :ref:`alignment` | ``0`` | - +-------------------------------------------------------------------+----------------------------------------------------------------------------------+-----------+ - | :ref:`LineBreakFlag` | :ref:`break_flags` | ``3`` | - +-------------------------------------------------------------------+----------------------------------------------------------------------------------+-----------+ - | :ref:`String` | :ref:`custom_punctuation` | ``""`` | - +-------------------------------------------------------------------+----------------------------------------------------------------------------------+-----------+ - | :ref:`Direction` | :ref:`direction` | ``0`` | - +-------------------------------------------------------------------+----------------------------------------------------------------------------------+-----------+ - | :ref:`JustificationFlag` | :ref:`justification_flags` | ``163`` | - +-------------------------------------------------------------------+----------------------------------------------------------------------------------+-----------+ - | :ref:`int` | :ref:`max_lines_visible` | ``-1`` | - +-------------------------------------------------------------------+----------------------------------------------------------------------------------+-----------+ - | :ref:`Orientation` | :ref:`orientation` | ``0`` | - +-------------------------------------------------------------------+----------------------------------------------------------------------------------+-----------+ - | :ref:`bool` | :ref:`preserve_control` | ``false`` | - +-------------------------------------------------------------------+----------------------------------------------------------------------------------+-----------+ - | :ref:`bool` | :ref:`preserve_invalid` | ``true`` | - +-------------------------------------------------------------------+----------------------------------------------------------------------------------+-----------+ - | :ref:`OverrunBehavior` | :ref:`text_overrun_behavior` | ``0`` | - +-------------------------------------------------------------------+----------------------------------------------------------------------------------+-----------+ - | :ref:`float` | :ref:`width` | ``-1.0`` | - +-------------------------------------------------------------------+----------------------------------------------------------------------------------+-----------+ + +---------------------------------------------------------------------------+----------------------------------------------------------------------------------+-----------+ + | :ref:`HorizontalAlignment` | :ref:`alignment` | ``0`` | + +---------------------------------------------------------------------------+----------------------------------------------------------------------------------+-----------+ + | |bitfield|\<:ref:`LineBreakFlag`\> | :ref:`break_flags` | ``3`` | + +---------------------------------------------------------------------------+----------------------------------------------------------------------------------+-----------+ + | :ref:`String` | :ref:`custom_punctuation` | ``""`` | + +---------------------------------------------------------------------------+----------------------------------------------------------------------------------+-----------+ + | :ref:`Direction` | :ref:`direction` | ``0`` | + +---------------------------------------------------------------------------+----------------------------------------------------------------------------------+-----------+ + | |bitfield|\<:ref:`JustificationFlag`\> | :ref:`justification_flags` | ``163`` | + +---------------------------------------------------------------------------+----------------------------------------------------------------------------------+-----------+ + | :ref:`int` | :ref:`max_lines_visible` | ``-1`` | + +---------------------------------------------------------------------------+----------------------------------------------------------------------------------+-----------+ + | :ref:`Orientation` | :ref:`orientation` | ``0`` | + +---------------------------------------------------------------------------+----------------------------------------------------------------------------------+-----------+ + | :ref:`bool` | :ref:`preserve_control` | ``false`` | + +---------------------------------------------------------------------------+----------------------------------------------------------------------------------+-----------+ + | :ref:`bool` | :ref:`preserve_invalid` | ``true`` | + +---------------------------------------------------------------------------+----------------------------------------------------------------------------------+-----------+ + | :ref:`OverrunBehavior` | :ref:`text_overrun_behavior` | ``0`` | + +---------------------------------------------------------------------------+----------------------------------------------------------------------------------+-----------+ + | :ref:`float` | :ref:`width` | ``-1.0`` | + +---------------------------------------------------------------------------+----------------------------------------------------------------------------------+-----------+ .. rst-class:: classref-reftable-group @@ -157,12 +157,12 @@ Paragraph horizontal alignment. .. rst-class:: classref-property -:ref:`LineBreakFlag` **break_flags** = ``3`` +|bitfield|\<:ref:`LineBreakFlag`\> **break_flags** = ``3`` .. rst-class:: classref-property-setget -- void **set_break_flags** **(** :ref:`LineBreakFlag` value **)** -- :ref:`LineBreakFlag` **get_break_flags** **(** **)** +- void **set_break_flags** **(** |bitfield|\<:ref:`LineBreakFlag`\> value **)** +- |bitfield|\<:ref:`LineBreakFlag`\> **get_break_flags** **(** **)** Line breaking rules. For more info see :ref:`TextServer`. @@ -208,12 +208,12 @@ Text writing direction. .. rst-class:: classref-property -:ref:`JustificationFlag` **justification_flags** = ``163`` +|bitfield|\<:ref:`JustificationFlag`\> **justification_flags** = ``163`` .. rst-class:: classref-property-setget -- void **set_justification_flags** **(** :ref:`JustificationFlag` value **)** -- :ref:`JustificationFlag` **get_justification_flags** **(** **)** +- void **set_justification_flags** **(** |bitfield|\<:ref:`JustificationFlag`\> value **)** +- |bitfield|\<:ref:`JustificationFlag`\> **get_justification_flags** **(** **)** Line fill alignment rules. For more info see :ref:`JustificationFlag`. @@ -716,3 +716,4 @@ Aligns paragraph to the given tab-stops. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_textserver.rst b/classes/class_textserver.rst index ba217d3747fd..86f4c328f540 100644 --- a/classes/class_textserver.rst +++ b/classes/class_textserver.rst @@ -122,7 +122,7 @@ Methods +-----------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`font_get_stretch` **(** :ref:`RID` font_rid **)** |const| | +-----------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`FontStyle` | :ref:`font_get_style` **(** :ref:`RID` font_rid **)** |const| | + | |bitfield|\<:ref:`FontStyle`\> | :ref:`font_get_style` **(** :ref:`RID` font_rid **)** |const| | +-----------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`font_get_style_name` **(** :ref:`RID` font_rid **)** |const| | +-----------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -230,7 +230,7 @@ Methods +-----------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`font_set_stretch` **(** :ref:`RID` font_rid, :ref:`int` weight **)** | +-----------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`font_set_style` **(** :ref:`RID` font_rid, :ref:`FontStyle` style **)** | + | void | :ref:`font_set_style` **(** :ref:`RID` font_rid, |bitfield|\<:ref:`FontStyle`\> style **)** | +-----------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`font_set_style_name` **(** :ref:`RID` font_rid, :ref:`String` name **)** | +-----------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -306,7 +306,7 @@ Methods +-----------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`shaped_text_draw_outline` **(** :ref:`RID` shaped, :ref:`RID` canvas, :ref:`Vector2` pos, :ref:`float` clip_l=-1, :ref:`float` clip_r=-1, :ref:`int` outline_size=1, :ref:`Color` color=Color(1, 1, 1, 1) **)** |const| | +-----------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`shaped_text_fit_to_width` **(** :ref:`RID` shaped, :ref:`float` width, :ref:`JustificationFlag` justification_flags=3 **)** | + | :ref:`float` | :ref:`shaped_text_fit_to_width` **(** :ref:`RID` shaped, :ref:`float` width, |bitfield|\<:ref:`JustificationFlag`\> justification_flags=3 **)** | +-----------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`float` | :ref:`shaped_text_get_ascent` **(** :ref:`RID` shaped **)** |const| | +-----------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -334,9 +334,9 @@ Methods +-----------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Direction` | :ref:`shaped_text_get_inferred_direction` **(** :ref:`RID` shaped **)** |const| | +-----------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedInt32Array` | :ref:`shaped_text_get_line_breaks` **(** :ref:`RID` shaped, :ref:`float` width, :ref:`int` start=0, :ref:`LineBreakFlag` break_flags=3 **)** |const| | + | :ref:`PackedInt32Array` | :ref:`shaped_text_get_line_breaks` **(** :ref:`RID` shaped, :ref:`float` width, :ref:`int` start=0, |bitfield|\<:ref:`LineBreakFlag`\> break_flags=3 **)** |const| | +-----------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedInt32Array` | :ref:`shaped_text_get_line_breaks_adv` **(** :ref:`RID` shaped, :ref:`PackedFloat32Array` width, :ref:`int` start=0, :ref:`bool` once=true, :ref:`LineBreakFlag` break_flags=3 **)** |const| | + | :ref:`PackedInt32Array` | :ref:`shaped_text_get_line_breaks_adv` **(** :ref:`RID` shaped, :ref:`PackedFloat32Array` width, :ref:`int` start=0, :ref:`bool` once=true, |bitfield|\<:ref:`LineBreakFlag`\> break_flags=3 **)** |const| | +-----------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Rect2` | :ref:`shaped_text_get_object_rect` **(** :ref:`RID` shaped, :ref:`Variant` key **)** |const| | +-----------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -366,7 +366,7 @@ Methods +-----------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`float` | :ref:`shaped_text_get_width` **(** :ref:`RID` shaped **)** |const| | +-----------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedInt32Array` | :ref:`shaped_text_get_word_breaks` **(** :ref:`RID` shaped, :ref:`GraphemeFlag` grapheme_flags=264 **)** |const| | + | :ref:`PackedInt32Array` | :ref:`shaped_text_get_word_breaks` **(** :ref:`RID` shaped, |bitfield|\<:ref:`GraphemeFlag`\> grapheme_flags=264 **)** |const| | +-----------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`shaped_text_has_visible_chars` **(** :ref:`RID` shaped **)** |const| | +-----------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -378,7 +378,7 @@ Methods +-----------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`shaped_text_next_grapheme_pos` **(** :ref:`RID` shaped, :ref:`int` pos **)** |const| | +-----------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`shaped_text_overrun_trim_to_width` **(** :ref:`RID` shaped, :ref:`float` width=0, :ref:`TextOverrunFlag` overrun_trim_flags=0 **)** | + | void | :ref:`shaped_text_overrun_trim_to_width` **(** :ref:`RID` shaped, :ref:`float` width=0, |bitfield|\<:ref:`TextOverrunFlag`\> overrun_trim_flags=0 **)** | +-----------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`shaped_text_prev_grapheme_pos` **(** :ref:`RID` shaped, :ref:`int` pos **)** |const| | +-----------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -2041,7 +2041,7 @@ Returns font stretch amount, compared to a normal width. A percentage value betw .. rst-class:: classref-method -:ref:`FontStyle` **font_get_style** **(** :ref:`RID` font_rid **)** |const| +|bitfield|\<:ref:`FontStyle`\> **font_get_style** **(** :ref:`RID` font_rid **)** |const| Returns font style flags, see :ref:`FontStyle`. @@ -2701,7 +2701,7 @@ Sets font stretch amount, compared to a normal width. A percentage value between .. rst-class:: classref-method -void **font_set_style** **(** :ref:`RID` font_rid, :ref:`FontStyle` style **)** +void **font_set_style** **(** :ref:`RID` font_rid, |bitfield|\<:ref:`FontStyle`\> style **)** Sets the font style flags, see :ref:`FontStyle`. @@ -3189,7 +3189,7 @@ Draw the outline of the shaped text into a canvas item at a given position, with .. rst-class:: classref-method -:ref:`float` **shaped_text_fit_to_width** **(** :ref:`RID` shaped, :ref:`float` width, :ref:`JustificationFlag` justification_flags=3 **)** +:ref:`float` **shaped_text_fit_to_width** **(** :ref:`RID` shaped, :ref:`float` width, |bitfield|\<:ref:`JustificationFlag`\> justification_flags=3 **)** Adjusts text width to fit to specified width, returns new text width. @@ -3361,7 +3361,7 @@ Returns direction of the text, inferred by the BiDi algorithm. .. rst-class:: classref-method -:ref:`PackedInt32Array` **shaped_text_get_line_breaks** **(** :ref:`RID` shaped, :ref:`float` width, :ref:`int` start=0, :ref:`LineBreakFlag` break_flags=3 **)** |const| +:ref:`PackedInt32Array` **shaped_text_get_line_breaks** **(** :ref:`RID` shaped, :ref:`float` width, :ref:`int` start=0, |bitfield|\<:ref:`LineBreakFlag`\> break_flags=3 **)** |const| Breaks text to the lines and returns character ranges for each line. @@ -3373,7 +3373,7 @@ Breaks text to the lines and returns character ranges for each line. .. rst-class:: classref-method -:ref:`PackedInt32Array` **shaped_text_get_line_breaks_adv** **(** :ref:`RID` shaped, :ref:`PackedFloat32Array` width, :ref:`int` start=0, :ref:`bool` once=true, :ref:`LineBreakFlag` break_flags=3 **)** |const| +:ref:`PackedInt32Array` **shaped_text_get_line_breaks_adv** **(** :ref:`RID` shaped, :ref:`PackedFloat32Array` width, :ref:`int` start=0, :ref:`bool` once=true, |bitfield|\<:ref:`LineBreakFlag`\> break_flags=3 **)** |const| Breaks text to the lines and columns. Returns character ranges for each segment. @@ -3555,7 +3555,7 @@ Returns width (for horizontal layout) or height (for vertical) of the text. .. rst-class:: classref-method -:ref:`PackedInt32Array` **shaped_text_get_word_breaks** **(** :ref:`RID` shaped, :ref:`GraphemeFlag` grapheme_flags=264 **)** |const| +:ref:`PackedInt32Array` **shaped_text_get_word_breaks** **(** :ref:`RID` shaped, |bitfield|\<:ref:`GraphemeFlag`\> grapheme_flags=264 **)** |const| Breaks text into words and returns array of character ranges. Use ``grapheme_flags`` to set what characters are used for breaking (see :ref:`GraphemeFlag`). @@ -3627,7 +3627,7 @@ Returns composite character end position closest to the ``pos``. .. rst-class:: classref-method -void **shaped_text_overrun_trim_to_width** **(** :ref:`RID` shaped, :ref:`float` width=0, :ref:`TextOverrunFlag` overrun_trim_flags=0 **)** +void **shaped_text_overrun_trim_to_width** **(** :ref:`RID` shaped, :ref:`float` width=0, |bitfield|\<:ref:`TextOverrunFlag`\> overrun_trim_flags=0 **)** Trims text if it exceeds the given width. @@ -3893,3 +3893,4 @@ Converts OpenType tag to readable feature, variation, script or language name. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_textserveradvanced.rst b/classes/class_textserveradvanced.rst index 476af3eabfc0..819fbea5f15e 100644 --- a/classes/class_textserveradvanced.rst +++ b/classes/class_textserveradvanced.rst @@ -27,3 +27,4 @@ An implementation of :ref:`TextServer` that uses HarfBuzz, ICU .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_textserverdummy.rst b/classes/class_textserverdummy.rst index 9d5a9931528a..8e65c928b714 100644 --- a/classes/class_textserverdummy.rst +++ b/classes/class_textserverdummy.rst @@ -42,3 +42,4 @@ The command line argument ``--text-driver Dummy`` (case-sensitive) can be used t .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_textserverextension.rst b/classes/class_textserverextension.rst index 1d68dc01d385..3427cd3cc28e 100644 --- a/classes/class_textserverextension.rst +++ b/classes/class_textserverextension.rst @@ -31,399 +31,399 @@ Methods .. table:: :widths: auto - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_cleanup` **(** **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`_create_font` **(** **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`_create_shaped_text` **(** :ref:`Direction` direction, :ref:`Orientation` orientation **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_draw_hex_code_box` **(** :ref:`RID` canvas, :ref:`int` size, :ref:`Vector2` pos, :ref:`int` index, :ref:`Color` color **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_clear_glyphs` **(** :ref:`RID` font_rid, :ref:`Vector2i` size **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_clear_kerning_map` **(** :ref:`RID` font_rid, :ref:`int` size **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_clear_size_cache` **(** :ref:`RID` font_rid **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_clear_textures` **(** :ref:`RID` font_rid, :ref:`Vector2i` size **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_draw_glyph` **(** :ref:`RID` font_rid, :ref:`RID` canvas, :ref:`int` size, :ref:`Vector2` pos, :ref:`int` index, :ref:`Color` color **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_draw_glyph_outline` **(** :ref:`RID` font_rid, :ref:`RID` canvas, :ref:`int` size, :ref:`int` outline_size, :ref:`Vector2` pos, :ref:`int` index, :ref:`Color` color **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`FontAntialiasing` | :ref:`_font_get_antialiasing` **(** :ref:`RID` font_rid **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`_font_get_ascent` **(** :ref:`RID` font_rid, :ref:`int` size **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_font_get_char_from_glyph_index` **(** :ref:`RID` font_rid, :ref:`int` size, :ref:`int` glyph_index **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`_font_get_descent` **(** :ref:`RID` font_rid, :ref:`int` size **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`_font_get_embolden` **(** :ref:`RID` font_rid **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_font_get_face_count` **(** :ref:`RID` font_rid **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_font_get_face_index` **(** :ref:`RID` font_rid **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_font_get_fixed_size` **(** :ref:`RID` font_rid **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_font_get_generate_mipmaps` **(** :ref:`RID` font_rid **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`_font_get_global_oversampling` **(** **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`_font_get_glyph_advance` **(** :ref:`RID` font_rid, :ref:`int` size, :ref:`int` glyph **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Dictionary` | :ref:`_font_get_glyph_contours` **(** :ref:`RID` font_rid, :ref:`int` size, :ref:`int` index **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_font_get_glyph_index` **(** :ref:`RID` font_rid, :ref:`int` size, :ref:`int` char, :ref:`int` variation_selector **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedInt32Array` | :ref:`_font_get_glyph_list` **(** :ref:`RID` font_rid, :ref:`Vector2i` size **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`_font_get_glyph_offset` **(** :ref:`RID` font_rid, :ref:`Vector2i` size, :ref:`int` glyph **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`_font_get_glyph_size` **(** :ref:`RID` font_rid, :ref:`Vector2i` size, :ref:`int` glyph **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_font_get_glyph_texture_idx` **(** :ref:`RID` font_rid, :ref:`Vector2i` size, :ref:`int` glyph **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`_font_get_glyph_texture_rid` **(** :ref:`RID` font_rid, :ref:`Vector2i` size, :ref:`int` glyph **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`_font_get_glyph_texture_size` **(** :ref:`RID` font_rid, :ref:`Vector2i` size, :ref:`int` glyph **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Rect2` | :ref:`_font_get_glyph_uv_rect` **(** :ref:`RID` font_rid, :ref:`Vector2i` size, :ref:`int` glyph **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Hinting` | :ref:`_font_get_hinting` **(** :ref:`RID` font_rid **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`_font_get_kerning` **(** :ref:`RID` font_rid, :ref:`int` size, :ref:`Vector2i` glyph_pair **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2i[]` | :ref:`_font_get_kerning_list` **(** :ref:`RID` font_rid, :ref:`int` size **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_font_get_language_support_override` **(** :ref:`RID` font_rid, :ref:`String` language **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedStringArray` | :ref:`_font_get_language_support_overrides` **(** :ref:`RID` font_rid **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_font_get_msdf_pixel_range` **(** :ref:`RID` font_rid **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_font_get_msdf_size` **(** :ref:`RID` font_rid **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`_font_get_name` **(** :ref:`RID` font_rid **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Dictionary` | :ref:`_font_get_opentype_feature_overrides` **(** :ref:`RID` font_rid **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Dictionary` | :ref:`_font_get_ot_name_strings` **(** :ref:`RID` font_rid **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`_font_get_oversampling` **(** :ref:`RID` font_rid **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`_font_get_scale` **(** :ref:`RID` font_rid, :ref:`int` size **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_font_get_script_support_override` **(** :ref:`RID` font_rid, :ref:`String` script **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedStringArray` | :ref:`_font_get_script_support_overrides` **(** :ref:`RID` font_rid **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2i[]` | :ref:`_font_get_size_cache_list` **(** :ref:`RID` font_rid **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_font_get_stretch` **(** :ref:`RID` font_rid **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`FontStyle` | :ref:`_font_get_style` **(** :ref:`RID` font_rid **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`_font_get_style_name` **(** :ref:`RID` font_rid **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`SubpixelPositioning` | :ref:`_font_get_subpixel_positioning` **(** :ref:`RID` font_rid **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`_font_get_supported_chars` **(** :ref:`RID` font_rid **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_font_get_texture_count` **(** :ref:`RID` font_rid, :ref:`Vector2i` size **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Image` | :ref:`_font_get_texture_image` **(** :ref:`RID` font_rid, :ref:`Vector2i` size, :ref:`int` texture_index **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedInt32Array` | :ref:`_font_get_texture_offsets` **(** :ref:`RID` font_rid, :ref:`Vector2i` size, :ref:`int` texture_index **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Transform2D` | :ref:`_font_get_transform` **(** :ref:`RID` font_rid **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`_font_get_underline_position` **(** :ref:`RID` font_rid, :ref:`int` size **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`_font_get_underline_thickness` **(** :ref:`RID` font_rid, :ref:`int` size **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Dictionary` | :ref:`_font_get_variation_coordinates` **(** :ref:`RID` font_rid **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_font_get_weight` **(** :ref:`RID` font_rid **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_font_has_char` **(** :ref:`RID` font_rid, :ref:`int` char **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_font_is_allow_system_fallback` **(** :ref:`RID` font_rid **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_font_is_force_autohinter` **(** :ref:`RID` font_rid **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_font_is_language_supported` **(** :ref:`RID` font_rid, :ref:`String` language **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_font_is_multichannel_signed_distance_field` **(** :ref:`RID` font_rid **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_font_is_script_supported` **(** :ref:`RID` font_rid, :ref:`String` script **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_remove_glyph` **(** :ref:`RID` font_rid, :ref:`Vector2i` size, :ref:`int` glyph **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_remove_kerning` **(** :ref:`RID` font_rid, :ref:`int` size, :ref:`Vector2i` glyph_pair **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_remove_language_support_override` **(** :ref:`RID` font_rid, :ref:`String` language **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_remove_script_support_override` **(** :ref:`RID` font_rid, :ref:`String` script **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_remove_size_cache` **(** :ref:`RID` font_rid, :ref:`Vector2i` size **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_remove_texture` **(** :ref:`RID` font_rid, :ref:`Vector2i` size, :ref:`int` texture_index **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_render_glyph` **(** :ref:`RID` font_rid, :ref:`Vector2i` size, :ref:`int` index **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_render_range` **(** :ref:`RID` font_rid, :ref:`Vector2i` size, :ref:`int` start, :ref:`int` end **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_set_allow_system_fallback` **(** :ref:`RID` font_rid, :ref:`bool` allow_system_fallback **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_set_antialiasing` **(** :ref:`RID` font_rid, :ref:`FontAntialiasing` antialiasing **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_set_ascent` **(** :ref:`RID` font_rid, :ref:`int` size, :ref:`float` ascent **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_set_data` **(** :ref:`RID` font_rid, :ref:`PackedByteArray` data **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_set_data_ptr` **(** :ref:`RID` font_rid, const uint8_t* data_ptr, :ref:`int` data_size **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_set_descent` **(** :ref:`RID` font_rid, :ref:`int` size, :ref:`float` descent **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_set_embolden` **(** :ref:`RID` font_rid, :ref:`float` strength **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_set_face_index` **(** :ref:`RID` font_rid, :ref:`int` face_index **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_set_fixed_size` **(** :ref:`RID` font_rid, :ref:`int` fixed_size **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_set_force_autohinter` **(** :ref:`RID` font_rid, :ref:`bool` force_autohinter **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_set_generate_mipmaps` **(** :ref:`RID` font_rid, :ref:`bool` generate_mipmaps **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_set_global_oversampling` **(** :ref:`float` oversampling **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_set_glyph_advance` **(** :ref:`RID` font_rid, :ref:`int` size, :ref:`int` glyph, :ref:`Vector2` advance **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_set_glyph_offset` **(** :ref:`RID` font_rid, :ref:`Vector2i` size, :ref:`int` glyph, :ref:`Vector2` offset **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_set_glyph_size` **(** :ref:`RID` font_rid, :ref:`Vector2i` size, :ref:`int` glyph, :ref:`Vector2` gl_size **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_set_glyph_texture_idx` **(** :ref:`RID` font_rid, :ref:`Vector2i` size, :ref:`int` glyph, :ref:`int` texture_idx **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_set_glyph_uv_rect` **(** :ref:`RID` font_rid, :ref:`Vector2i` size, :ref:`int` glyph, :ref:`Rect2` uv_rect **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_set_hinting` **(** :ref:`RID` font_rid, :ref:`Hinting` hinting **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_set_kerning` **(** :ref:`RID` font_rid, :ref:`int` size, :ref:`Vector2i` glyph_pair, :ref:`Vector2` kerning **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_set_language_support_override` **(** :ref:`RID` font_rid, :ref:`String` language, :ref:`bool` supported **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_set_msdf_pixel_range` **(** :ref:`RID` font_rid, :ref:`int` msdf_pixel_range **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_set_msdf_size` **(** :ref:`RID` font_rid, :ref:`int` msdf_size **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_set_multichannel_signed_distance_field` **(** :ref:`RID` font_rid, :ref:`bool` msdf **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_set_name` **(** :ref:`RID` font_rid, :ref:`String` name **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_set_opentype_feature_overrides` **(** :ref:`RID` font_rid, :ref:`Dictionary` overrides **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_set_oversampling` **(** :ref:`RID` font_rid, :ref:`float` oversampling **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_set_scale` **(** :ref:`RID` font_rid, :ref:`int` size, :ref:`float` scale **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_set_script_support_override` **(** :ref:`RID` font_rid, :ref:`String` script, :ref:`bool` supported **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_set_stretch` **(** :ref:`RID` font_rid, :ref:`int` stretch **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_set_style` **(** :ref:`RID` font_rid, :ref:`FontStyle` style **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_set_style_name` **(** :ref:`RID` font_rid, :ref:`String` name_style **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_set_subpixel_positioning` **(** :ref:`RID` font_rid, :ref:`SubpixelPositioning` subpixel_positioning **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_set_texture_image` **(** :ref:`RID` font_rid, :ref:`Vector2i` size, :ref:`int` texture_index, :ref:`Image` image **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_set_texture_offsets` **(** :ref:`RID` font_rid, :ref:`Vector2i` size, :ref:`int` texture_index, :ref:`PackedInt32Array` offset **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_set_transform` **(** :ref:`RID` font_rid, :ref:`Transform2D` transform **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_set_underline_position` **(** :ref:`RID` font_rid, :ref:`int` size, :ref:`float` underline_position **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_set_underline_thickness` **(** :ref:`RID` font_rid, :ref:`int` size, :ref:`float` underline_thickness **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_set_variation_coordinates` **(** :ref:`RID` font_rid, :ref:`Dictionary` variation_coordinates **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_font_set_weight` **(** :ref:`RID` font_rid, :ref:`int` weight **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Dictionary` | :ref:`_font_supported_feature_list` **(** :ref:`RID` font_rid **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Dictionary` | :ref:`_font_supported_variation_list` **(** :ref:`RID` font_rid **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`_format_number` **(** :ref:`String` string, :ref:`String` language **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_free_rid` **(** :ref:`RID` rid **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_get_features` **(** **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`_get_hex_code_box_size` **(** :ref:`int` size, :ref:`int` index **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`_get_name` **(** **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`_get_support_data_filename` **(** **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`_get_support_data_info` **(** **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_has` **(** :ref:`RID` rid **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_has_feature` **(** :ref:`Feature` feature **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_is_confusable` **(** :ref:`String` string, :ref:`PackedStringArray` dict **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_is_locale_right_to_left` **(** :ref:`String` locale **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_is_valid_identifier` **(** :ref:`String` string **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_load_support_data` **(** :ref:`String` filename **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_name_to_tag` **(** :ref:`String` name **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`_parse_number` **(** :ref:`String` string, :ref:`String` language **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector3i[]` | :ref:`_parse_structured_text` **(** :ref:`StructuredTextParser` parser_type, :ref:`Array` args, :ref:`String` text **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`_percent_sign` **(** :ref:`String` language **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_save_support_data` **(** :ref:`String` filename **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_shaped_get_span_count` **(** :ref:`RID` shaped **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Variant` | :ref:`_shaped_get_span_meta` **(** :ref:`RID` shaped, :ref:`int` index **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_shaped_set_span_update_font` **(** :ref:`RID` shaped, :ref:`int` index, :ref:`RID[]` fonts, :ref:`int` size, :ref:`Dictionary` opentype_features **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_shaped_text_add_object` **(** :ref:`RID` shaped, :ref:`Variant` key, :ref:`Vector2` size, :ref:`InlineAlignment` inline_align, :ref:`int` length, :ref:`float` baseline **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_shaped_text_add_string` **(** :ref:`RID` shaped, :ref:`String` text, :ref:`RID[]` fonts, :ref:`int` size, :ref:`Dictionary` opentype_features, :ref:`String` language, :ref:`Variant` meta **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_shaped_text_clear` **(** :ref:`RID` shaped **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_shaped_text_draw` **(** :ref:`RID` shaped, :ref:`RID` canvas, :ref:`Vector2` pos, :ref:`float` clip_l, :ref:`float` clip_r, :ref:`Color` color **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_shaped_text_draw_outline` **(** :ref:`RID` shaped, :ref:`RID` canvas, :ref:`Vector2` pos, :ref:`float` clip_l, :ref:`float` clip_r, :ref:`int` outline_size, :ref:`Color` color **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`_shaped_text_fit_to_width` **(** :ref:`RID` shaped, :ref:`float` width, :ref:`JustificationFlag` justification_flags **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`_shaped_text_get_ascent` **(** :ref:`RID` shaped **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_shaped_text_get_carets` **(** :ref:`RID` shaped, :ref:`int` position, CaretInfo* caret **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`_shaped_text_get_custom_punctuation` **(** :ref:`RID` shaped **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`_shaped_text_get_descent` **(** :ref:`RID` shaped **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Direction` | :ref:`_shaped_text_get_direction` **(** :ref:`RID` shaped **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_shaped_text_get_dominant_direction_in_range` **(** :ref:`RID` shaped, :ref:`int` start, :ref:`int` end **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_shaped_text_get_ellipsis_glyph_count` **(** :ref:`RID` shaped **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | const Glyph* | :ref:`_shaped_text_get_ellipsis_glyphs` **(** :ref:`RID` shaped **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_shaped_text_get_ellipsis_pos` **(** :ref:`RID` shaped **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_shaped_text_get_glyph_count` **(** :ref:`RID` shaped **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | const Glyph* | :ref:`_shaped_text_get_glyphs` **(** :ref:`RID` shaped **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`_shaped_text_get_grapheme_bounds` **(** :ref:`RID` shaped, :ref:`int` pos **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Direction` | :ref:`_shaped_text_get_inferred_direction` **(** :ref:`RID` shaped **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedInt32Array` | :ref:`_shaped_text_get_line_breaks` **(** :ref:`RID` shaped, :ref:`float` width, :ref:`int` start, :ref:`LineBreakFlag` break_flags **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedInt32Array` | :ref:`_shaped_text_get_line_breaks_adv` **(** :ref:`RID` shaped, :ref:`PackedFloat32Array` width, :ref:`int` start, :ref:`bool` once, :ref:`LineBreakFlag` break_flags **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Rect2` | :ref:`_shaped_text_get_object_rect` **(** :ref:`RID` shaped, :ref:`Variant` key **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Array` | :ref:`_shaped_text_get_objects` **(** :ref:`RID` shaped **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Orientation` | :ref:`_shaped_text_get_orientation` **(** :ref:`RID` shaped **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`_shaped_text_get_parent` **(** :ref:`RID` shaped **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_shaped_text_get_preserve_control` **(** :ref:`RID` shaped **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_shaped_text_get_preserve_invalid` **(** :ref:`RID` shaped **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2i` | :ref:`_shaped_text_get_range` **(** :ref:`RID` shaped **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedVector2Array` | :ref:`_shaped_text_get_selection` **(** :ref:`RID` shaped, :ref:`int` start, :ref:`int` end **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`_shaped_text_get_size` **(** :ref:`RID` shaped **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_shaped_text_get_spacing` **(** :ref:`RID` shaped, :ref:`SpacingType` spacing **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_shaped_text_get_trim_pos` **(** :ref:`RID` shaped **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`_shaped_text_get_underline_position` **(** :ref:`RID` shaped **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`_shaped_text_get_underline_thickness` **(** :ref:`RID` shaped **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`_shaped_text_get_width` **(** :ref:`RID` shaped **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedInt32Array` | :ref:`_shaped_text_get_word_breaks` **(** :ref:`RID` shaped, :ref:`GraphemeFlag` grapheme_flags **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_shaped_text_hit_test_grapheme` **(** :ref:`RID` shaped, :ref:`float` coord **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_shaped_text_hit_test_position` **(** :ref:`RID` shaped, :ref:`float` coord **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_shaped_text_is_ready` **(** :ref:`RID` shaped **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_shaped_text_next_grapheme_pos` **(** :ref:`RID` shaped, :ref:`int` pos **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_shaped_text_overrun_trim_to_width` **(** :ref:`RID` shaped, :ref:`float` width, :ref:`TextOverrunFlag` trim_flags **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_shaped_text_prev_grapheme_pos` **(** :ref:`RID` shaped, :ref:`int` pos **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_shaped_text_resize_object` **(** :ref:`RID` shaped, :ref:`Variant` key, :ref:`Vector2` size, :ref:`InlineAlignment` inline_align, :ref:`float` baseline **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_shaped_text_set_bidi_override` **(** :ref:`RID` shaped, :ref:`Array` override **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_shaped_text_set_custom_punctuation` **(** :ref:`RID` shaped, :ref:`String` punct **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_shaped_text_set_direction` **(** :ref:`RID` shaped, :ref:`Direction` direction **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_shaped_text_set_orientation` **(** :ref:`RID` shaped, :ref:`Orientation` orientation **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_shaped_text_set_preserve_control` **(** :ref:`RID` shaped, :ref:`bool` enabled **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_shaped_text_set_preserve_invalid` **(** :ref:`RID` shaped, :ref:`bool` enabled **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`_shaped_text_set_spacing` **(** :ref:`RID` shaped, :ref:`SpacingType` spacing, :ref:`int` value **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_shaped_text_shape` **(** :ref:`RID` shaped **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | const Glyph* | :ref:`_shaped_text_sort_logical` **(** :ref:`RID` shaped **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`_shaped_text_substr` **(** :ref:`RID` shaped, :ref:`int` start, :ref:`int` length **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`_shaped_text_tab_align` **(** :ref:`RID` shaped, :ref:`PackedFloat32Array` tab_stops **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_shaped_text_update_breaks` **(** :ref:`RID` shaped **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_shaped_text_update_justification_ops` **(** :ref:`RID` shaped **)** |virtual| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_spoof_check` **(** :ref:`String` string **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedInt32Array` | :ref:`_string_get_word_breaks` **(** :ref:`String` string, :ref:`String` language, :ref:`int` chars_per_line **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`_string_to_lower` **(** :ref:`String` string, :ref:`String` language **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`_string_to_upper` **(** :ref:`String` string, :ref:`String` language **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`_strip_diacritics` **(** :ref:`String` string **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`_tag_to_name` **(** :ref:`int` tag **)** |virtual| |const| | - +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_cleanup` **(** **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`_create_font` **(** **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`_create_shaped_text` **(** :ref:`Direction` direction, :ref:`Orientation` orientation **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_draw_hex_code_box` **(** :ref:`RID` canvas, :ref:`int` size, :ref:`Vector2` pos, :ref:`int` index, :ref:`Color` color **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_clear_glyphs` **(** :ref:`RID` font_rid, :ref:`Vector2i` size **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_clear_kerning_map` **(** :ref:`RID` font_rid, :ref:`int` size **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_clear_size_cache` **(** :ref:`RID` font_rid **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_clear_textures` **(** :ref:`RID` font_rid, :ref:`Vector2i` size **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_draw_glyph` **(** :ref:`RID` font_rid, :ref:`RID` canvas, :ref:`int` size, :ref:`Vector2` pos, :ref:`int` index, :ref:`Color` color **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_draw_glyph_outline` **(** :ref:`RID` font_rid, :ref:`RID` canvas, :ref:`int` size, :ref:`int` outline_size, :ref:`Vector2` pos, :ref:`int` index, :ref:`Color` color **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`FontAntialiasing` | :ref:`_font_get_antialiasing` **(** :ref:`RID` font_rid **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`_font_get_ascent` **(** :ref:`RID` font_rid, :ref:`int` size **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_font_get_char_from_glyph_index` **(** :ref:`RID` font_rid, :ref:`int` size, :ref:`int` glyph_index **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`_font_get_descent` **(** :ref:`RID` font_rid, :ref:`int` size **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`_font_get_embolden` **(** :ref:`RID` font_rid **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_font_get_face_count` **(** :ref:`RID` font_rid **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_font_get_face_index` **(** :ref:`RID` font_rid **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_font_get_fixed_size` **(** :ref:`RID` font_rid **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_font_get_generate_mipmaps` **(** :ref:`RID` font_rid **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`_font_get_global_oversampling` **(** **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`_font_get_glyph_advance` **(** :ref:`RID` font_rid, :ref:`int` size, :ref:`int` glyph **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`_font_get_glyph_contours` **(** :ref:`RID` font_rid, :ref:`int` size, :ref:`int` index **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_font_get_glyph_index` **(** :ref:`RID` font_rid, :ref:`int` size, :ref:`int` char, :ref:`int` variation_selector **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedInt32Array` | :ref:`_font_get_glyph_list` **(** :ref:`RID` font_rid, :ref:`Vector2i` size **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`_font_get_glyph_offset` **(** :ref:`RID` font_rid, :ref:`Vector2i` size, :ref:`int` glyph **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`_font_get_glyph_size` **(** :ref:`RID` font_rid, :ref:`Vector2i` size, :ref:`int` glyph **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_font_get_glyph_texture_idx` **(** :ref:`RID` font_rid, :ref:`Vector2i` size, :ref:`int` glyph **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`_font_get_glyph_texture_rid` **(** :ref:`RID` font_rid, :ref:`Vector2i` size, :ref:`int` glyph **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`_font_get_glyph_texture_size` **(** :ref:`RID` font_rid, :ref:`Vector2i` size, :ref:`int` glyph **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Rect2` | :ref:`_font_get_glyph_uv_rect` **(** :ref:`RID` font_rid, :ref:`Vector2i` size, :ref:`int` glyph **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Hinting` | :ref:`_font_get_hinting` **(** :ref:`RID` font_rid **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`_font_get_kerning` **(** :ref:`RID` font_rid, :ref:`int` size, :ref:`Vector2i` glyph_pair **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2i[]` | :ref:`_font_get_kerning_list` **(** :ref:`RID` font_rid, :ref:`int` size **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_font_get_language_support_override` **(** :ref:`RID` font_rid, :ref:`String` language **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedStringArray` | :ref:`_font_get_language_support_overrides` **(** :ref:`RID` font_rid **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_font_get_msdf_pixel_range` **(** :ref:`RID` font_rid **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_font_get_msdf_size` **(** :ref:`RID` font_rid **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`_font_get_name` **(** :ref:`RID` font_rid **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`_font_get_opentype_feature_overrides` **(** :ref:`RID` font_rid **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`_font_get_ot_name_strings` **(** :ref:`RID` font_rid **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`_font_get_oversampling` **(** :ref:`RID` font_rid **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`_font_get_scale` **(** :ref:`RID` font_rid, :ref:`int` size **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_font_get_script_support_override` **(** :ref:`RID` font_rid, :ref:`String` script **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedStringArray` | :ref:`_font_get_script_support_overrides` **(** :ref:`RID` font_rid **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2i[]` | :ref:`_font_get_size_cache_list` **(** :ref:`RID` font_rid **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_font_get_stretch` **(** :ref:`RID` font_rid **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |bitfield|\<:ref:`FontStyle`\> | :ref:`_font_get_style` **(** :ref:`RID` font_rid **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`_font_get_style_name` **(** :ref:`RID` font_rid **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`SubpixelPositioning` | :ref:`_font_get_subpixel_positioning` **(** :ref:`RID` font_rid **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`_font_get_supported_chars` **(** :ref:`RID` font_rid **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_font_get_texture_count` **(** :ref:`RID` font_rid, :ref:`Vector2i` size **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Image` | :ref:`_font_get_texture_image` **(** :ref:`RID` font_rid, :ref:`Vector2i` size, :ref:`int` texture_index **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedInt32Array` | :ref:`_font_get_texture_offsets` **(** :ref:`RID` font_rid, :ref:`Vector2i` size, :ref:`int` texture_index **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Transform2D` | :ref:`_font_get_transform` **(** :ref:`RID` font_rid **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`_font_get_underline_position` **(** :ref:`RID` font_rid, :ref:`int` size **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`_font_get_underline_thickness` **(** :ref:`RID` font_rid, :ref:`int` size **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`_font_get_variation_coordinates` **(** :ref:`RID` font_rid **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_font_get_weight` **(** :ref:`RID` font_rid **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_font_has_char` **(** :ref:`RID` font_rid, :ref:`int` char **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_font_is_allow_system_fallback` **(** :ref:`RID` font_rid **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_font_is_force_autohinter` **(** :ref:`RID` font_rid **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_font_is_language_supported` **(** :ref:`RID` font_rid, :ref:`String` language **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_font_is_multichannel_signed_distance_field` **(** :ref:`RID` font_rid **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_font_is_script_supported` **(** :ref:`RID` font_rid, :ref:`String` script **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_remove_glyph` **(** :ref:`RID` font_rid, :ref:`Vector2i` size, :ref:`int` glyph **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_remove_kerning` **(** :ref:`RID` font_rid, :ref:`int` size, :ref:`Vector2i` glyph_pair **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_remove_language_support_override` **(** :ref:`RID` font_rid, :ref:`String` language **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_remove_script_support_override` **(** :ref:`RID` font_rid, :ref:`String` script **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_remove_size_cache` **(** :ref:`RID` font_rid, :ref:`Vector2i` size **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_remove_texture` **(** :ref:`RID` font_rid, :ref:`Vector2i` size, :ref:`int` texture_index **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_render_glyph` **(** :ref:`RID` font_rid, :ref:`Vector2i` size, :ref:`int` index **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_render_range` **(** :ref:`RID` font_rid, :ref:`Vector2i` size, :ref:`int` start, :ref:`int` end **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_set_allow_system_fallback` **(** :ref:`RID` font_rid, :ref:`bool` allow_system_fallback **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_set_antialiasing` **(** :ref:`RID` font_rid, :ref:`FontAntialiasing` antialiasing **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_set_ascent` **(** :ref:`RID` font_rid, :ref:`int` size, :ref:`float` ascent **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_set_data` **(** :ref:`RID` font_rid, :ref:`PackedByteArray` data **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_set_data_ptr` **(** :ref:`RID` font_rid, const uint8_t* data_ptr, :ref:`int` data_size **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_set_descent` **(** :ref:`RID` font_rid, :ref:`int` size, :ref:`float` descent **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_set_embolden` **(** :ref:`RID` font_rid, :ref:`float` strength **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_set_face_index` **(** :ref:`RID` font_rid, :ref:`int` face_index **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_set_fixed_size` **(** :ref:`RID` font_rid, :ref:`int` fixed_size **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_set_force_autohinter` **(** :ref:`RID` font_rid, :ref:`bool` force_autohinter **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_set_generate_mipmaps` **(** :ref:`RID` font_rid, :ref:`bool` generate_mipmaps **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_set_global_oversampling` **(** :ref:`float` oversampling **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_set_glyph_advance` **(** :ref:`RID` font_rid, :ref:`int` size, :ref:`int` glyph, :ref:`Vector2` advance **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_set_glyph_offset` **(** :ref:`RID` font_rid, :ref:`Vector2i` size, :ref:`int` glyph, :ref:`Vector2` offset **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_set_glyph_size` **(** :ref:`RID` font_rid, :ref:`Vector2i` size, :ref:`int` glyph, :ref:`Vector2` gl_size **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_set_glyph_texture_idx` **(** :ref:`RID` font_rid, :ref:`Vector2i` size, :ref:`int` glyph, :ref:`int` texture_idx **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_set_glyph_uv_rect` **(** :ref:`RID` font_rid, :ref:`Vector2i` size, :ref:`int` glyph, :ref:`Rect2` uv_rect **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_set_hinting` **(** :ref:`RID` font_rid, :ref:`Hinting` hinting **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_set_kerning` **(** :ref:`RID` font_rid, :ref:`int` size, :ref:`Vector2i` glyph_pair, :ref:`Vector2` kerning **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_set_language_support_override` **(** :ref:`RID` font_rid, :ref:`String` language, :ref:`bool` supported **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_set_msdf_pixel_range` **(** :ref:`RID` font_rid, :ref:`int` msdf_pixel_range **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_set_msdf_size` **(** :ref:`RID` font_rid, :ref:`int` msdf_size **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_set_multichannel_signed_distance_field` **(** :ref:`RID` font_rid, :ref:`bool` msdf **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_set_name` **(** :ref:`RID` font_rid, :ref:`String` name **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_set_opentype_feature_overrides` **(** :ref:`RID` font_rid, :ref:`Dictionary` overrides **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_set_oversampling` **(** :ref:`RID` font_rid, :ref:`float` oversampling **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_set_scale` **(** :ref:`RID` font_rid, :ref:`int` size, :ref:`float` scale **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_set_script_support_override` **(** :ref:`RID` font_rid, :ref:`String` script, :ref:`bool` supported **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_set_stretch` **(** :ref:`RID` font_rid, :ref:`int` stretch **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_set_style` **(** :ref:`RID` font_rid, |bitfield|\<:ref:`FontStyle`\> style **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_set_style_name` **(** :ref:`RID` font_rid, :ref:`String` name_style **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_set_subpixel_positioning` **(** :ref:`RID` font_rid, :ref:`SubpixelPositioning` subpixel_positioning **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_set_texture_image` **(** :ref:`RID` font_rid, :ref:`Vector2i` size, :ref:`int` texture_index, :ref:`Image` image **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_set_texture_offsets` **(** :ref:`RID` font_rid, :ref:`Vector2i` size, :ref:`int` texture_index, :ref:`PackedInt32Array` offset **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_set_transform` **(** :ref:`RID` font_rid, :ref:`Transform2D` transform **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_set_underline_position` **(** :ref:`RID` font_rid, :ref:`int` size, :ref:`float` underline_position **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_set_underline_thickness` **(** :ref:`RID` font_rid, :ref:`int` size, :ref:`float` underline_thickness **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_set_variation_coordinates` **(** :ref:`RID` font_rid, :ref:`Dictionary` variation_coordinates **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_font_set_weight` **(** :ref:`RID` font_rid, :ref:`int` weight **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`_font_supported_feature_list` **(** :ref:`RID` font_rid **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`_font_supported_variation_list` **(** :ref:`RID` font_rid **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`_format_number` **(** :ref:`String` string, :ref:`String` language **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_free_rid` **(** :ref:`RID` rid **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_get_features` **(** **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`_get_hex_code_box_size` **(** :ref:`int` size, :ref:`int` index **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`_get_name` **(** **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`_get_support_data_filename` **(** **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`_get_support_data_info` **(** **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_has` **(** :ref:`RID` rid **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_has_feature` **(** :ref:`Feature` feature **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_is_confusable` **(** :ref:`String` string, :ref:`PackedStringArray` dict **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_is_locale_right_to_left` **(** :ref:`String` locale **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_is_valid_identifier` **(** :ref:`String` string **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_load_support_data` **(** :ref:`String` filename **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_name_to_tag` **(** :ref:`String` name **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`_parse_number` **(** :ref:`String` string, :ref:`String` language **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector3i[]` | :ref:`_parse_structured_text` **(** :ref:`StructuredTextParser` parser_type, :ref:`Array` args, :ref:`String` text **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`_percent_sign` **(** :ref:`String` language **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_save_support_data` **(** :ref:`String` filename **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_shaped_get_span_count` **(** :ref:`RID` shaped **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Variant` | :ref:`_shaped_get_span_meta` **(** :ref:`RID` shaped, :ref:`int` index **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_shaped_set_span_update_font` **(** :ref:`RID` shaped, :ref:`int` index, :ref:`RID[]` fonts, :ref:`int` size, :ref:`Dictionary` opentype_features **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_shaped_text_add_object` **(** :ref:`RID` shaped, :ref:`Variant` key, :ref:`Vector2` size, :ref:`InlineAlignment` inline_align, :ref:`int` length, :ref:`float` baseline **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_shaped_text_add_string` **(** :ref:`RID` shaped, :ref:`String` text, :ref:`RID[]` fonts, :ref:`int` size, :ref:`Dictionary` opentype_features, :ref:`String` language, :ref:`Variant` meta **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_shaped_text_clear` **(** :ref:`RID` shaped **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_shaped_text_draw` **(** :ref:`RID` shaped, :ref:`RID` canvas, :ref:`Vector2` pos, :ref:`float` clip_l, :ref:`float` clip_r, :ref:`Color` color **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_shaped_text_draw_outline` **(** :ref:`RID` shaped, :ref:`RID` canvas, :ref:`Vector2` pos, :ref:`float` clip_l, :ref:`float` clip_r, :ref:`int` outline_size, :ref:`Color` color **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`_shaped_text_fit_to_width` **(** :ref:`RID` shaped, :ref:`float` width, |bitfield|\<:ref:`JustificationFlag`\> justification_flags **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`_shaped_text_get_ascent` **(** :ref:`RID` shaped **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_shaped_text_get_carets` **(** :ref:`RID` shaped, :ref:`int` position, CaretInfo* caret **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`_shaped_text_get_custom_punctuation` **(** :ref:`RID` shaped **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`_shaped_text_get_descent` **(** :ref:`RID` shaped **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Direction` | :ref:`_shaped_text_get_direction` **(** :ref:`RID` shaped **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_shaped_text_get_dominant_direction_in_range` **(** :ref:`RID` shaped, :ref:`int` start, :ref:`int` end **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_shaped_text_get_ellipsis_glyph_count` **(** :ref:`RID` shaped **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | const Glyph* | :ref:`_shaped_text_get_ellipsis_glyphs` **(** :ref:`RID` shaped **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_shaped_text_get_ellipsis_pos` **(** :ref:`RID` shaped **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_shaped_text_get_glyph_count` **(** :ref:`RID` shaped **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | const Glyph* | :ref:`_shaped_text_get_glyphs` **(** :ref:`RID` shaped **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`_shaped_text_get_grapheme_bounds` **(** :ref:`RID` shaped, :ref:`int` pos **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Direction` | :ref:`_shaped_text_get_inferred_direction` **(** :ref:`RID` shaped **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedInt32Array` | :ref:`_shaped_text_get_line_breaks` **(** :ref:`RID` shaped, :ref:`float` width, :ref:`int` start, |bitfield|\<:ref:`LineBreakFlag`\> break_flags **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedInt32Array` | :ref:`_shaped_text_get_line_breaks_adv` **(** :ref:`RID` shaped, :ref:`PackedFloat32Array` width, :ref:`int` start, :ref:`bool` once, |bitfield|\<:ref:`LineBreakFlag`\> break_flags **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Rect2` | :ref:`_shaped_text_get_object_rect` **(** :ref:`RID` shaped, :ref:`Variant` key **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Array` | :ref:`_shaped_text_get_objects` **(** :ref:`RID` shaped **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Orientation` | :ref:`_shaped_text_get_orientation` **(** :ref:`RID` shaped **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`_shaped_text_get_parent` **(** :ref:`RID` shaped **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_shaped_text_get_preserve_control` **(** :ref:`RID` shaped **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_shaped_text_get_preserve_invalid` **(** :ref:`RID` shaped **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2i` | :ref:`_shaped_text_get_range` **(** :ref:`RID` shaped **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedVector2Array` | :ref:`_shaped_text_get_selection` **(** :ref:`RID` shaped, :ref:`int` start, :ref:`int` end **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`_shaped_text_get_size` **(** :ref:`RID` shaped **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_shaped_text_get_spacing` **(** :ref:`RID` shaped, :ref:`SpacingType` spacing **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_shaped_text_get_trim_pos` **(** :ref:`RID` shaped **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`_shaped_text_get_underline_position` **(** :ref:`RID` shaped **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`_shaped_text_get_underline_thickness` **(** :ref:`RID` shaped **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`_shaped_text_get_width` **(** :ref:`RID` shaped **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedInt32Array` | :ref:`_shaped_text_get_word_breaks` **(** :ref:`RID` shaped, |bitfield|\<:ref:`GraphemeFlag`\> grapheme_flags **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_shaped_text_hit_test_grapheme` **(** :ref:`RID` shaped, :ref:`float` coord **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_shaped_text_hit_test_position` **(** :ref:`RID` shaped, :ref:`float` coord **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_shaped_text_is_ready` **(** :ref:`RID` shaped **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_shaped_text_next_grapheme_pos` **(** :ref:`RID` shaped, :ref:`int` pos **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_shaped_text_overrun_trim_to_width` **(** :ref:`RID` shaped, :ref:`float` width, |bitfield|\<:ref:`TextOverrunFlag`\> trim_flags **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_shaped_text_prev_grapheme_pos` **(** :ref:`RID` shaped, :ref:`int` pos **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_shaped_text_resize_object` **(** :ref:`RID` shaped, :ref:`Variant` key, :ref:`Vector2` size, :ref:`InlineAlignment` inline_align, :ref:`float` baseline **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_shaped_text_set_bidi_override` **(** :ref:`RID` shaped, :ref:`Array` override **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_shaped_text_set_custom_punctuation` **(** :ref:`RID` shaped, :ref:`String` punct **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_shaped_text_set_direction` **(** :ref:`RID` shaped, :ref:`Direction` direction **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_shaped_text_set_orientation` **(** :ref:`RID` shaped, :ref:`Orientation` orientation **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_shaped_text_set_preserve_control` **(** :ref:`RID` shaped, :ref:`bool` enabled **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_shaped_text_set_preserve_invalid` **(** :ref:`RID` shaped, :ref:`bool` enabled **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`_shaped_text_set_spacing` **(** :ref:`RID` shaped, :ref:`SpacingType` spacing, :ref:`int` value **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_shaped_text_shape` **(** :ref:`RID` shaped **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | const Glyph* | :ref:`_shaped_text_sort_logical` **(** :ref:`RID` shaped **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`_shaped_text_substr` **(** :ref:`RID` shaped, :ref:`int` start, :ref:`int` length **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`_shaped_text_tab_align` **(** :ref:`RID` shaped, :ref:`PackedFloat32Array` tab_stops **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_shaped_text_update_breaks` **(** :ref:`RID` shaped **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_shaped_text_update_justification_ops` **(** :ref:`RID` shaped **)** |virtual| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_spoof_check` **(** :ref:`String` string **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedInt32Array` | :ref:`_string_get_word_breaks` **(** :ref:`String` string, :ref:`String` language, :ref:`int` chars_per_line **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`_string_to_lower` **(** :ref:`String` string, :ref:`String` language **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`_string_to_upper` **(** :ref:`String` string, :ref:`String` language **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`_strip_diacritics` **(** :ref:`String` string **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`_tag_to_name` **(** :ref:`int` tag **)** |virtual| |const| | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator @@ -1082,7 +1082,7 @@ void **_font_draw_glyph_outline** **(** :ref:`RID` font_rid, :ref:`RI .. rst-class:: classref-method -:ref:`FontStyle` **_font_get_style** **(** :ref:`RID` font_rid **)** |virtual| |const| +|bitfield|\<:ref:`FontStyle`\> **_font_get_style** **(** :ref:`RID` font_rid **)** |virtual| |const| .. container:: contribute @@ -1852,7 +1852,7 @@ void **_font_set_stretch** **(** :ref:`RID` font_rid, :ref:`int` font_rid, :ref:`FontStyle` style **)** |virtual| +void **_font_set_style** **(** :ref:`RID` font_rid, |bitfield|\<:ref:`FontStyle`\> style **)** |virtual| .. container:: contribute @@ -2384,7 +2384,7 @@ void **_shaped_text_draw_outline** **(** :ref:`RID` shaped, :ref:`RID .. rst-class:: classref-method -:ref:`float` **_shaped_text_fit_to_width** **(** :ref:`RID` shaped, :ref:`float` width, :ref:`JustificationFlag` justification_flags **)** |virtual| +:ref:`float` **_shaped_text_fit_to_width** **(** :ref:`RID` shaped, :ref:`float` width, |bitfield|\<:ref:`JustificationFlag`\> justification_flags **)** |virtual| .. container:: contribute @@ -2580,7 +2580,7 @@ const Glyph* **_shaped_text_get_glyphs** **(** :ref:`RID` shaped **)* .. rst-class:: classref-method -:ref:`PackedInt32Array` **_shaped_text_get_line_breaks** **(** :ref:`RID` shaped, :ref:`float` width, :ref:`int` start, :ref:`LineBreakFlag` break_flags **)** |virtual| |const| +:ref:`PackedInt32Array` **_shaped_text_get_line_breaks** **(** :ref:`RID` shaped, :ref:`float` width, :ref:`int` start, |bitfield|\<:ref:`LineBreakFlag`\> break_flags **)** |virtual| |const| .. container:: contribute @@ -2594,7 +2594,7 @@ const Glyph* **_shaped_text_get_glyphs** **(** :ref:`RID` shaped **)* .. rst-class:: classref-method -:ref:`PackedInt32Array` **_shaped_text_get_line_breaks_adv** **(** :ref:`RID` shaped, :ref:`PackedFloat32Array` width, :ref:`int` start, :ref:`bool` once, :ref:`LineBreakFlag` break_flags **)** |virtual| |const| +:ref:`PackedInt32Array` **_shaped_text_get_line_breaks_adv** **(** :ref:`RID` shaped, :ref:`PackedFloat32Array` width, :ref:`int` start, :ref:`bool` once, |bitfield|\<:ref:`LineBreakFlag`\> break_flags **)** |virtual| |const| .. container:: contribute @@ -2804,7 +2804,7 @@ const Glyph* **_shaped_text_get_glyphs** **(** :ref:`RID` shaped **)* .. rst-class:: classref-method -:ref:`PackedInt32Array` **_shaped_text_get_word_breaks** **(** :ref:`RID` shaped, :ref:`GraphemeFlag` grapheme_flags **)** |virtual| |const| +:ref:`PackedInt32Array` **_shaped_text_get_word_breaks** **(** :ref:`RID` shaped, |bitfield|\<:ref:`GraphemeFlag`\> grapheme_flags **)** |virtual| |const| .. container:: contribute @@ -2874,7 +2874,7 @@ const Glyph* **_shaped_text_get_glyphs** **(** :ref:`RID` shaped **)* .. rst-class:: classref-method -void **_shaped_text_overrun_trim_to_width** **(** :ref:`RID` shaped, :ref:`float` width, :ref:`TextOverrunFlag` trim_flags **)** |virtual| +void **_shaped_text_overrun_trim_to_width** **(** :ref:`RID` shaped, :ref:`float` width, |bitfield|\<:ref:`TextOverrunFlag`\> trim_flags **)** |virtual| .. container:: contribute @@ -3180,3 +3180,4 @@ const Glyph* **_shaped_text_sort_logical** **(** :ref:`RID` shaped ** .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_textserverfallback.rst b/classes/class_textserverfallback.rst index 2e1c914b97cb..69a98d507e75 100644 --- a/classes/class_textserverfallback.rst +++ b/classes/class_textserverfallback.rst @@ -29,3 +29,4 @@ A fallback implementation of Godot's text server. This fallback is faster than : .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_textservermanager.rst b/classes/class_textservermanager.rst index 65dcdc0c5148..0932f6e0cad6 100644 --- a/classes/class_textservermanager.rst +++ b/classes/class_textservermanager.rst @@ -185,3 +185,4 @@ Sets the primary :ref:`TextServer` interface. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_texture.rst b/classes/class_texture.rst index 501e6b3ff3a9..246ba9a41a9b 100644 --- a/classes/class_texture.rst +++ b/classes/class_texture.rst @@ -29,3 +29,4 @@ Description .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_texture2d.rst b/classes/class_texture2d.rst index 4d524c349004..e32153efbddc 100644 --- a/classes/class_texture2d.rst +++ b/classes/class_texture2d.rst @@ -282,3 +282,4 @@ Returns ``true`` if this **Texture2D** has an alpha channel. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_texture2darray.rst b/classes/class_texture2darray.rst index 0407cf02faff..c5684ef19f4c 100644 --- a/classes/class_texture2darray.rst +++ b/classes/class_texture2darray.rst @@ -60,3 +60,4 @@ Creates a placeholder version of this resource (:ref:`PlaceholderTexture2DArray< .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_texture3d.rst b/classes/class_texture3d.rst index 508881bc1626..3e59c8d087a8 100644 --- a/classes/class_texture3d.rst +++ b/classes/class_texture3d.rst @@ -230,3 +230,4 @@ Returns ``true`` if the **Texture3D** has generated mipmaps. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_texturebutton.rst b/classes/class_texturebutton.rst index 2c07f18d937f..a85310ec495e 100644 --- a/classes/class_texturebutton.rst +++ b/classes/class_texturebutton.rst @@ -314,3 +314,4 @@ Texture to display on mouse down over the node, if the node has keyboard focus a .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_texturelayered.rst b/classes/class_texturelayered.rst index 4ee057d8bb6f..85d24a7c8a4b 100644 --- a/classes/class_texturelayered.rst +++ b/classes/class_texturelayered.rst @@ -287,3 +287,4 @@ Returns ``true`` if the layers have generated mipmaps. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_textureprogressbar.rst b/classes/class_textureprogressbar.rst index eb43b243a872..bc8a55154042 100644 --- a/classes/class_textureprogressbar.rst +++ b/classes/class_textureprogressbar.rst @@ -29,45 +29,45 @@ Properties .. table:: :widths: auto - +----------------------------------------------+-------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`fill_mode` | ``0`` | - +----------------------------------------------+-------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ - | :ref:`MouseFilter` | mouse_filter | ``1`` (overrides :ref:`Control`) | - +----------------------------------------------+-------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`nine_patch_stretch` | ``false`` | - +----------------------------------------------+-------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`radial_center_offset` | ``Vector2(0, 0)`` | - +----------------------------------------------+-------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`radial_fill_degrees` | ``360.0`` | - +----------------------------------------------+-------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`radial_initial_angle` | ``0.0`` | - +----------------------------------------------+-------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ - | :ref:`SizeFlags` | size_flags_vertical | ``1`` (overrides :ref:`Control`) | - +----------------------------------------------+-------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ - | :ref:`float` | step | ``1.0`` (overrides :ref:`Range`) | - +----------------------------------------------+-------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`stretch_margin_bottom` | ``0`` | - +----------------------------------------------+-------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`stretch_margin_left` | ``0`` | - +----------------------------------------------+-------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`stretch_margin_right` | ``0`` | - +----------------------------------------------+-------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`stretch_margin_top` | ``0`` | - +----------------------------------------------+-------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ - | :ref:`Texture2D` | :ref:`texture_over` | | - +----------------------------------------------+-------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ - | :ref:`Texture2D` | :ref:`texture_progress` | | - +----------------------------------------------+-------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`texture_progress_offset` | ``Vector2(0, 0)`` | - +----------------------------------------------+-------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ - | :ref:`Texture2D` | :ref:`texture_under` | | - +----------------------------------------------+-------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`tint_over` | ``Color(1, 1, 1, 1)`` | - +----------------------------------------------+-------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`tint_progress` | ``Color(1, 1, 1, 1)`` | - +----------------------------------------------+-------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`tint_under` | ``Color(1, 1, 1, 1)`` | - +----------------------------------------------+-------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ + +--------------------------------------------------------+-------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`fill_mode` | ``0`` | + +--------------------------------------------------------+-------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ + | :ref:`MouseFilter` | mouse_filter | ``1`` (overrides :ref:`Control`) | + +--------------------------------------------------------+-------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`nine_patch_stretch` | ``false`` | + +--------------------------------------------------------+-------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`radial_center_offset` | ``Vector2(0, 0)`` | + +--------------------------------------------------------+-------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`radial_fill_degrees` | ``360.0`` | + +--------------------------------------------------------+-------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`radial_initial_angle` | ``0.0`` | + +--------------------------------------------------------+-------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ + | |bitfield|\<:ref:`SizeFlags`\> | size_flags_vertical | ``1`` (overrides :ref:`Control`) | + +--------------------------------------------------------+-------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ + | :ref:`float` | step | ``1.0`` (overrides :ref:`Range`) | + +--------------------------------------------------------+-------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`stretch_margin_bottom` | ``0`` | + +--------------------------------------------------------+-------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`stretch_margin_left` | ``0`` | + +--------------------------------------------------------+-------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`stretch_margin_right` | ``0`` | + +--------------------------------------------------------+-------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`stretch_margin_top` | ``0`` | + +--------------------------------------------------------+-------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ + | :ref:`Texture2D` | :ref:`texture_over` | | + +--------------------------------------------------------+-------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ + | :ref:`Texture2D` | :ref:`texture_progress` | | + +--------------------------------------------------------+-------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`texture_progress_offset` | ``Vector2(0, 0)`` | + +--------------------------------------------------------+-------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ + | :ref:`Texture2D` | :ref:`texture_under` | | + +--------------------------------------------------------+-------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`tint_over` | ``Color(1, 1, 1, 1)`` | + +--------------------------------------------------------+-------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`tint_progress` | ``Color(1, 1, 1, 1)`` | + +--------------------------------------------------------+-------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`tint_under` | ``Color(1, 1, 1, 1)`` | + +--------------------------------------------------------+-------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ .. rst-class:: classref-reftable-group @@ -486,3 +486,4 @@ Sets the stretch margin with the specified index. See :ref:`stretch_margin_botto .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_texturerect.rst b/classes/class_texturerect.rst index cd450e2b32e4..cadc1baca854 100644 --- a/classes/class_texturerect.rst +++ b/classes/class_texturerect.rst @@ -277,3 +277,4 @@ The node's :ref:`Texture2D` resource. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_theme.rst b/classes/class_theme.rst index d142d12b41d8..591f06a84dd6 100644 --- a/classes/class_theme.rst +++ b/classes/class_theme.rst @@ -1164,3 +1164,4 @@ Variations can also be nested, i.e. ``base_type`` can be another variation. If a .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_themedb.rst b/classes/class_themedb.rst index 552dfe02f699..588be34fff35 100644 --- a/classes/class_themedb.rst +++ b/classes/class_themedb.rst @@ -207,3 +207,4 @@ To set the project theme, see :ref:`ProjectSettings.gui/theme/custom` | :ref:`get_id` **(** **)** |const| | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_alive` **(** **)** |const| | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_started` **(** **)** |const| | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Error` | :ref:`start` **(** :ref:`Callable` callable, :ref:`Priority` priority=1 **)** | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Variant` | :ref:`wait_to_finish` **(** **)** | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+ + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`get_id` **(** **)** |const| | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_alive` **(** **)** |const| | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_started` **(** **)** |const| | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`set_thread_safety_checks_enabled` **(** :ref:`bool` enabled **)** |static| | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Error` | :ref:`start` **(** :ref:`Callable` callable, :ref:`Priority` priority=1 **)** | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Variant` | :ref:`wait_to_finish` **(** **)** | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator @@ -150,6 +152,30 @@ Returns ``true`` if this **Thread** has been started. Once started, this will re ---- +.. _class_Thread_method_set_thread_safety_checks_enabled: + +.. rst-class:: classref-method + +void **set_thread_safety_checks_enabled** **(** :ref:`bool` enabled **)** |static| + +Sets whether the thread safety checks the engine normally performs in methods of certain classes (e.g., :ref:`Node`) should happen **on the current thread**. + +The default, for every thread, is that they are enabled (as if called with ``enabled`` being ``true``). + +Those checks are conservative. That means that they will only succeed in considering a call thread-safe (and therefore allow it to happen) if the engine can guarantee such safety. + +Because of that, there may be cases where the user may want to disable them (``enabled`` being ``false``) to make certain operations allowed again. By doing so, it becomes the user's responsibility to ensure thread safety (e.g., by using :ref:`Mutex`) for those objects that are otherwise protected by the engine. + +\ **Note:** This is an advanced usage of the engine. You are advised to use it only if you know what you are doing and there is no safer way. + +\ **Note:** This is useful for scripts running on either arbitrary **Thread** objects or tasks submitted to the :ref:`WorkerThreadPool`. It doesn't apply to code running during :ref:`Node` group processing, where the checks will be always performed. + +\ **Note:** Even in the case of having disabled the checks in a :ref:`WorkerThreadPool` task, there's no need to re-enable them at the end. The engine will do so. + +.. rst-class:: classref-item-separator + +---- + .. _class_Thread_method_start: .. rst-class:: classref-method @@ -186,3 +212,4 @@ To determine if this can be called without blocking the calling thread, check if .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_tiledata.rst b/classes/class_tiledata.rst index 465eb494b682..f615a98e2abb 100644 --- a/classes/class_tiledata.rst +++ b/classes/class_tiledata.rst @@ -619,3 +619,4 @@ Sets the tile's terrain bit for the given ``peering_bit`` direction. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_tilemap.rst b/classes/class_tilemap.rst index 098c354ff7e7..2644707e31d4 100644 --- a/classes/class_tilemap.rst +++ b/classes/class_tilemap.rst @@ -917,3 +917,4 @@ Paste the given :ref:`TileMapPattern` at the given ``posit .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_tilemappattern.rst b/classes/class_tilemappattern.rst index a06050dff65c..f0be66f1927b 100644 --- a/classes/class_tilemappattern.rst +++ b/classes/class_tilemappattern.rst @@ -184,3 +184,4 @@ Sets the size of the pattern. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_tileset.rst b/classes/class_tileset.rst index b71b886ffe7a..dae87515527e 100644 --- a/classes/class_tileset.rst +++ b/classes/class_tileset.rst @@ -714,6 +714,8 @@ Adds a :ref:`TileSetSource` to the TileSet. If ``atlas_sour The function returns the added source ID or -1 if the source could not be added. +\ **Warning:** A source cannot belong to two TileSets at the same time. If the added source was attached to another **TileSet**, it will be removed from that one. + .. rst-class:: classref-item-separator ---- @@ -1582,3 +1584,4 @@ Sets a terrain mode. Each mode determines which bits of a tile shape is used to .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_tilesetatlassource.rst b/classes/class_tilesetatlassource.rst index f9ee419a68fd..22a12bb63ee5 100644 --- a/classes/class_tilesetatlassource.rst +++ b/classes/class_tilesetatlassource.rst @@ -552,3 +552,4 @@ Sets the animation speed of the tile at coordinates ``atlas_coords`` has. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_tilesetscenescollectionsource.rst b/classes/class_tilesetscenescollectionsource.rst index f6c580e818d6..10e762131e93 100644 --- a/classes/class_tilesetscenescollectionsource.rst +++ b/classes/class_tilesetscenescollectionsource.rst @@ -200,3 +200,4 @@ Assigns a :ref:`PackedScene` resource to the scene tile with .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_tilesetsource.rst b/classes/class_tilesetsource.rst index 6559929d4bb0..479f32b6730b 100644 --- a/classes/class_tilesetsource.rst +++ b/classes/class_tilesetsource.rst @@ -29,6 +29,8 @@ Depending on the TileSet source type, those IDs might have restrictions on their You can iterate over all tiles exposed by a TileSetSource by first iterating over coordinates IDs using :ref:`get_tiles_count` and :ref:`get_tile_id`, then over alternative IDs using :ref:`get_alternative_tiles_count` and :ref:`get_alternative_tile_id`. +\ **Warning:** **TileSetSource** can only be added to one TileSet at the same time. Calling :ref:`TileSet.add_source` on a second :ref:`TileSet` will remove the source from the first one. + .. rst-class:: classref-reftable-group Methods @@ -138,3 +140,4 @@ Returns if this atlas has a tile with coordinates ID ``atlas_coords``. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_time.rst b/classes/class_time.rst index 9fc14a249886..377ead4f322f 100644 --- a/classes/class_time.rst +++ b/classes/class_time.rst @@ -565,3 +565,4 @@ Returns the current Unix timestamp in seconds based on the system time in UTC. T .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_timer.rst b/classes/class_timer.rst index e6a040152611..e01b1559ed14 100644 --- a/classes/class_timer.rst +++ b/classes/class_timer.rst @@ -108,7 +108,7 @@ enum **TimerProcessCallback**: :ref:`TimerProcessCallback` **TIMER_PROCESS_PHYSICS** = ``0`` -Update the timer during the physics step at each frame (fixed framerate processing). +Update the timer during physics frames (see :ref:`Node.NOTIFICATION_INTERNAL_PHYSICS_PROCESS`). .. _class_Timer_constant_TIMER_PROCESS_IDLE: @@ -116,7 +116,7 @@ Update the timer during the physics step at each frame (fixed framerate processi :ref:`TimerProcessCallback` **TIMER_PROCESS_IDLE** = ``1`` -Update the timer during the idle time at each frame. +Update the timer during process frames (see :ref:`Node.NOTIFICATION_INTERNAL_PROCESS`). .. rst-class:: classref-section-separator @@ -279,3 +279,4 @@ Stops the timer. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_tlsoptions.rst b/classes/class_tlsoptions.rst index 383550bd5186..7a47742ebdb7 100644 --- a/classes/class_tlsoptions.rst +++ b/classes/class_tlsoptions.rst @@ -110,3 +110,4 @@ Note: The ``certificate`` should include the full certificate chain up to the si .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_torusmesh.rst b/classes/class_torusmesh.rst index 88bc2f9b3e24..c10730f15345 100644 --- a/classes/class_torusmesh.rst +++ b/classes/class_torusmesh.rst @@ -118,3 +118,4 @@ The number of slices the torus is constructed of. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_touchscreenbutton.rst b/classes/class_touchscreenbutton.rst index cbdd3a37658e..30d20a4a231f 100644 --- a/classes/class_touchscreenbutton.rst +++ b/classes/class_touchscreenbutton.rst @@ -308,3 +308,4 @@ Returns ``true`` if this button is currently pressed. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_transform2d.rst b/classes/class_transform2d.rst index 7fb58542d2eb..4a7f9ed4e063 100644 --- a/classes/class_transform2d.rst +++ b/classes/class_transform2d.rst @@ -679,3 +679,4 @@ Access transform components using their index. ``t[0]`` is equivalent to ``t.x`` .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_transform3d.rst b/classes/class_transform3d.rst index 053b61d7b263..f77aa605e2f6 100644 --- a/classes/class_transform3d.rst +++ b/classes/class_transform3d.rst @@ -579,3 +579,4 @@ Returns ``true`` if the transforms are exactly equal. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_translation.rst b/classes/class_translation.rst index 51ebb500bd84..370d0e82883a 100644 --- a/classes/class_translation.rst +++ b/classes/class_translation.rst @@ -233,3 +233,4 @@ Returns all the messages (translated text). .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_translationserver.rst b/classes/class_translationserver.rst index e8532a9c7b0c..f66b5e567033 100644 --- a/classes/class_translationserver.rst +++ b/classes/class_translationserver.rst @@ -389,3 +389,4 @@ The number ``n`` is the number or quantity of the plural object. It will be used .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_tree.rst b/classes/class_tree.rst index 1f79ac935e7b..cf185b05e975 100644 --- a/classes/class_tree.rst +++ b/classes/class_tree.rst @@ -1938,3 +1938,4 @@ Default :ref:`StyleBox` for the title button. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_treeitem.rst b/classes/class_treeitem.rst index 7238c305413b..f5dcf4820dab 100644 --- a/classes/class_treeitem.rst +++ b/classes/class_treeitem.rst @@ -1580,3 +1580,4 @@ void **uncollapse_tree** **(** **)** .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_trianglemesh.rst b/classes/class_trianglemesh.rst index 11947b9a9311..0c8228f9a1ae 100644 --- a/classes/class_trianglemesh.rst +++ b/classes/class_trianglemesh.rst @@ -27,3 +27,4 @@ Mesh type used internally for collision calculations. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_tubetrailmesh.rst b/classes/class_tubetrailmesh.rst index 6a5f056c9603..4adc96da0ca2 100644 --- a/classes/class_tubetrailmesh.rst +++ b/classes/class_tubetrailmesh.rst @@ -205,3 +205,4 @@ The total number of sections on the tube. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_tween.rst b/classes/class_tween.rst index 716f18507155..8ea12ca4506e 100644 --- a/classes/class_tween.rst +++ b/classes/class_tween.rst @@ -139,11 +139,11 @@ You should avoid using more than one **Tween** per object's property. If two or Some :ref:`Tweener`\ s use transitions and eases. The first accepts a :ref:`TransitionType` constant, and refers to the way the timing of the animation is handled (see `easings.net `__ for some examples). The second accepts an :ref:`EaseType` constant, and controls where the ``trans_type`` is applied to the interpolation (in the beginning, the end, or both). If you don't know which transition and easing to pick, you can try different :ref:`TransitionType` constants with :ref:`EASE_IN_OUT`, and use the one that looks best. -\ `Tween easing and transition types cheatsheet `__\ +\ `Tween easing and transition types cheatsheet `__\ \ **Note:** Tweens are not designed to be re-used and trying to do so results in an undefined behavior. Create a new Tween for each animation and every time you replay an animation from start. Keep in mind that Tweens start immediately, so only create a Tween when you want to start animating. -\ **Note:** Tweens are processing after all of nodes in the current frame, i.e. after :ref:`Node._process` or :ref:`Node._physics_process` (depending on :ref:`TweenProcessMode`). +\ **Note:** The tween is processed after all of the nodes in the current frame, i.e. node's :ref:`Node._process` method would be called before the timer (or :ref:`Node._physics_process` depending on the value passed to :ref:`set_process_mode`). .. rst-class:: classref-reftable-group @@ -265,7 +265,7 @@ enum **TweenProcessMode**: :ref:`TweenProcessMode` **TWEEN_PROCESS_PHYSICS** = ``0`` -The **Tween** updates during the physics frame. +The **Tween** updates after each physics frame (see :ref:`Node._physics_process`). .. _class_Tween_constant_TWEEN_PROCESS_IDLE: @@ -273,7 +273,7 @@ The **Tween** updates during the physics frame. :ref:`TweenProcessMode` **TWEEN_PROCESS_IDLE** = ``1`` -The **Tween** updates during the idle frame. +The **Tween** updates after each process frame (see :ref:`Node._process`). .. rst-class:: classref-item-separator @@ -732,7 +732,7 @@ Default value is :ref:`TWEEN_PAUSE_BOUND :ref:`Tween` **set_process_mode** **(** :ref:`TweenProcessMode` mode **)** -Determines whether the **Tween** should run during idle frame (see :ref:`Node._process`) or physics frame (see :ref:`Node._physics_process`. +Determines whether the **Tween** should run after process frames (see :ref:`Node._process`) or physics frames (see :ref:`Node._physics_process`). Default value is :ref:`TWEEN_PROCESS_IDLE`. @@ -1001,3 +1001,4 @@ will move the sprite to position (100, 200) and then to (200, 300). If you use : .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_tweener.rst b/classes/class_tweener.rst index 3aa0d028410a..63b7d8cde694 100644 --- a/classes/class_tweener.rst +++ b/classes/class_tweener.rst @@ -46,3 +46,4 @@ Emitted when the **Tweener** has just finished its job. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_udpserver.rst b/classes/class_udpserver.rst index 459cf35bbba3..898ddd4cfbe1 100644 --- a/classes/class_udpserver.rst +++ b/classes/class_udpserver.rst @@ -302,3 +302,4 @@ Returns the first pending connection (connected to the appropriate address/port) .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_undoredo.rst b/classes/class_undoredo.rst index 183fb2c6d47a..7ee3c1e1bc26 100644 --- a/classes/class_undoredo.rst +++ b/classes/class_undoredo.rst @@ -79,12 +79,47 @@ Here's an example on how to add an action: -\ :ref:`create_action`, :ref:`add_do_method`, :ref:`add_undo_method`, :ref:`add_do_property`, :ref:`add_undo_property`, and :ref:`commit_action` should be called one after the other, like in the example. Not doing so could lead to crashes. +Before calling any of the ``add_(un)do_*`` methods, you need to first call :ref:`create_action`. Afterwards you need to call :ref:`commit_action`. -If you don't need to register a method, you can leave :ref:`add_do_method` and :ref:`add_undo_method` out; the same goes for properties. You can also register more than one method/property in the order they should run. +If you don't need to register a method, you can leave :ref:`add_do_method` and :ref:`add_undo_method` out; the same goes for properties. You can also register more than one method/property. If you are making an :ref:`EditorPlugin` and want to integrate into the editor's undo history, use :ref:`EditorUndoRedoManager` instead. +If you are registering multiple properties/method which depend on one another, be aware that by default undo operation are called in the same order they have been added. Therefore instead of grouping do operation with their undo operations it is better to group do on one side and undo on the other as shown below. + + +.. tabs:: + + .. code-tab:: gdscript + + undo_redo.create_action("Add object") + + # DO + undo_redo.add_do_method(_create_object) + undo_redo.add_do_method(_add_object_to_singleton) + + # UNDO + undo_redo.add_undo_method(_remove_object_from_singleton) + undo_redo.add_undo_method(_destroy_that_object) + + undo_redo.commit_action() + + .. code-tab:: csharp + + _undo_redo.CreateAction("Add object"); + + // DO + _undo_redo.AddDoMethod(new Callable(this, MethodName.CreateObject)); + _undo_redo.AddDoMethod(new Callable(this, MethodName.AddObjectToSingleton)); + + // UNDO + _undo_redo.AddUndoMethod(new Callable(this, MethodName.RemoveObjectFromSingleton)); + _undo_redo.AddUndoMethod(new Callable(this, MethodName.DestroyThatObject)); + + _undo_redo.CommitAction(); + + + .. rst-class:: classref-reftable-group Methods @@ -93,49 +128,49 @@ Methods .. table:: :widths: auto - +-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`add_do_method` **(** :ref:`Callable` callable **)** | - +-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`add_do_property` **(** :ref:`Object` object, :ref:`StringName` property, :ref:`Variant` value **)** | - +-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`add_do_reference` **(** :ref:`Object` object **)** | - +-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`add_undo_method` **(** :ref:`Callable` callable **)** | - +-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`add_undo_property` **(** :ref:`Object` object, :ref:`StringName` property, :ref:`Variant` value **)** | - +-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`add_undo_reference` **(** :ref:`Object` object **)** | - +-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`clear_history` **(** :ref:`bool` increase_version=true **)** | - +-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`commit_action` **(** :ref:`bool` execute=true **)** | - +-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`create_action` **(** :ref:`String` name, :ref:`MergeMode` merge_mode=0 **)** | - +-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`end_force_keep_in_merge_ends` **(** **)** | - +-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`get_action_name` **(** :ref:`int` id **)** | - +-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_current_action` **(** **)** | - +-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`get_current_action_name` **(** **)** |const| | - +-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_history_count` **(** **)** | - +-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_version` **(** **)** |const| | - +-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`has_redo` **(** **)** |const| | - +-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`has_undo` **(** **)** |const| | - +-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_committing_action` **(** **)** |const| | - +-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`redo` **(** **)** | - +-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`start_force_keep_in_merge_ends` **(** **)** | - +-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`undo` **(** **)** | - +-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`add_do_method` **(** :ref:`Callable` callable **)** | + +-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`add_do_property` **(** :ref:`Object` object, :ref:`StringName` property, :ref:`Variant` value **)** | + +-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`add_do_reference` **(** :ref:`Object` object **)** | + +-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`add_undo_method` **(** :ref:`Callable` callable **)** | + +-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`add_undo_property` **(** :ref:`Object` object, :ref:`StringName` property, :ref:`Variant` value **)** | + +-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`add_undo_reference` **(** :ref:`Object` object **)** | + +-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`clear_history` **(** :ref:`bool` increase_version=true **)** | + +-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`commit_action` **(** :ref:`bool` execute=true **)** | + +-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`create_action` **(** :ref:`String` name, :ref:`MergeMode` merge_mode=0, :ref:`bool` backward_undo_ops=false **)** | + +-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`end_force_keep_in_merge_ends` **(** **)** | + +-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`get_action_name` **(** :ref:`int` id **)** | + +-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_current_action` **(** **)** | + +-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`get_current_action_name` **(** **)** |const| | + +-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_history_count` **(** **)** | + +-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_version` **(** **)** |const| | + +-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`has_redo` **(** **)** |const| | + +-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`has_undo` **(** **)** |const| | + +-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_committing_action` **(** **)** |const| | + +-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`redo` **(** **)** | + +-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`start_force_keep_in_merge_ends` **(** **)** | + +-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`undo` **(** **)** | + +-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator @@ -322,12 +357,14 @@ Commit the action. If ``execute`` is ``true`` (which it is by default), all "do" .. rst-class:: classref-method -void **create_action** **(** :ref:`String` name, :ref:`MergeMode` merge_mode=0 **)** +void **create_action** **(** :ref:`String` name, :ref:`MergeMode` merge_mode=0, :ref:`bool` backward_undo_ops=false **)** Create a new action. After this is called, do all your calls to :ref:`add_do_method`, :ref:`add_undo_method`, :ref:`add_do_property`, and :ref:`add_undo_property`, then commit the action with :ref:`commit_action`. The way actions are merged is dictated by ``merge_mode``. See :ref:`MergeMode` for details. +The way undo operation are ordered in actions is dictated by ``backward_undo_ops``. When ``backward_undo_ops`` is ``false`` undo option are ordered in the same order they were added. Which means the first operation to be added will be the first to be undone. + .. rst-class:: classref-item-separator ---- @@ -480,3 +517,4 @@ Undo the last action. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_upnp.rst b/classes/class_upnp.rst index 16b9a0310236..edfc61c1e093 100644 --- a/classes/class_upnp.rst +++ b/classes/class_upnp.rst @@ -593,3 +593,4 @@ Sets the device at ``index`` from the list of discovered devices to ``device``. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_upnpdevice.rst b/classes/class_upnpdevice.rst index 41fa50a2ce3c..245cb1f6c9fd 100644 --- a/classes/class_upnpdevice.rst +++ b/classes/class_upnpdevice.rst @@ -322,3 +322,4 @@ Returns the external IP address of this **UPNPDevice** or an empty string. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_variant.rst b/classes/class_variant.rst index 368331eb9c8d..1e0512744004 100644 --- a/classes/class_variant.rst +++ b/classes/class_variant.rst @@ -134,3 +134,4 @@ Tutorials .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_vboxcontainer.rst b/classes/class_vboxcontainer.rst index 5d10f047febb..baf0830aad89 100644 --- a/classes/class_vboxcontainer.rst +++ b/classes/class_vboxcontainer.rst @@ -67,3 +67,4 @@ The vertical space between the **VBoxContainer**'s elements. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_vector2.rst b/classes/class_vector2.rst index efc95f6843c7..9bb06305943c 100644 --- a/classes/class_vector2.rst +++ b/classes/class_vector2.rst @@ -1179,3 +1179,4 @@ Returns the negative value of the **Vector2**. This is the same as writing ``Vec .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_vector2i.rst b/classes/class_vector2i.rst index 0016fa338bb2..07b62279a801 100644 --- a/classes/class_vector2i.rst +++ b/classes/class_vector2i.rst @@ -677,3 +677,4 @@ Returns the negative value of the **Vector2i**. This is the same as writing ``Ve .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_vector3.rst b/classes/class_vector3.rst index dea2d5ef2eb7..9815e8d7f8d3 100644 --- a/classes/class_vector3.rst +++ b/classes/class_vector3.rst @@ -1275,3 +1275,4 @@ Returns the negative value of the **Vector3**. This is the same as writing ``Vec .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_vector3i.rst b/classes/class_vector3i.rst index d4c6a5864421..f34f4a28746e 100644 --- a/classes/class_vector3i.rst +++ b/classes/class_vector3i.rst @@ -701,3 +701,4 @@ Returns the negative value of the **Vector3i**. This is the same as writing ``Ve .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_vector4.rst b/classes/class_vector4.rst index 818cfdec6755..63e4537a2394 100644 --- a/classes/class_vector4.rst +++ b/classes/class_vector4.rst @@ -928,3 +928,4 @@ Returns the negative value of the **Vector4**. This is the same as writing ``Vec .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_vector4i.rst b/classes/class_vector4i.rst index 7670f6a9e179..8d6b7ef85516 100644 --- a/classes/class_vector4i.rst +++ b/classes/class_vector4i.rst @@ -668,3 +668,4 @@ Returns the negative value of the **Vector4i**. This is the same as writing ``Ve .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_vehiclebody3d.rst b/classes/class_vehiclebody3d.rst index d99baf67d2b4..76f77ca84302 100644 --- a/classes/class_vehiclebody3d.rst +++ b/classes/class_vehiclebody3d.rst @@ -118,3 +118,4 @@ The steering angle for the vehicle. Setting this to a non-zero value will result .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_vehiclewheel3d.rst b/classes/class_vehiclewheel3d.rst index 858571efb515..7e8612be9f99 100644 --- a/classes/class_vehiclewheel3d.rst +++ b/classes/class_vehiclewheel3d.rst @@ -396,3 +396,4 @@ Returns ``true`` if this wheel is in contact with a surface. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_vflowcontainer.rst b/classes/class_vflowcontainer.rst index 341cdc46b88f..cac821ed150e 100644 --- a/classes/class_vflowcontainer.rst +++ b/classes/class_vflowcontainer.rst @@ -77,3 +77,4 @@ The vertical separation of children nodes. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_videostream.rst b/classes/class_videostream.rst index bab01db4cf63..3869a7ea4cc8 100644 --- a/classes/class_videostream.rst +++ b/classes/class_videostream.rst @@ -94,3 +94,4 @@ Called when the video starts playing, to initialize and return a subclass of :re .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_videostreamplayback.rst b/classes/class_videostreamplayback.rst index a0d539d0cf04..f3c18e4897e6 100644 --- a/classes/class_videostreamplayback.rst +++ b/classes/class_videostreamplayback.rst @@ -238,3 +238,4 @@ Render ``num_frames`` audio frames (of :ref:`_get_channels` node to display. This is relativ .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visibleonscreenenabler2d.rst b/classes/class_visibleonscreenenabler2d.rst index ef2eaa4610e8..e6cf8369433a 100644 --- a/classes/class_visibleonscreenenabler2d.rst +++ b/classes/class_visibleonscreenenabler2d.rst @@ -119,3 +119,4 @@ The path to the target node, relative to the **VisibleOnScreenEnabler2D**. The t .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visibleonscreenenabler3d.rst b/classes/class_visibleonscreenenabler3d.rst index b83525e49f33..814b032390aa 100644 --- a/classes/class_visibleonscreenenabler3d.rst +++ b/classes/class_visibleonscreenenabler3d.rst @@ -129,3 +129,4 @@ Property Descriptions .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visibleonscreennotifier2d.rst b/classes/class_visibleonscreennotifier2d.rst index 113125d36d63..e51e708ff18b 100644 --- a/classes/class_visibleonscreennotifier2d.rst +++ b/classes/class_visibleonscreennotifier2d.rst @@ -134,3 +134,4 @@ If ``true``, the bounding rectangle is on the screen. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visibleonscreennotifier3d.rst b/classes/class_visibleonscreennotifier3d.rst index 8bad9c80add1..419d2b223069 100644 --- a/classes/class_visibleonscreennotifier3d.rst +++ b/classes/class_visibleonscreennotifier3d.rst @@ -127,3 +127,4 @@ If ``true``, the bounding box is on the screen. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visualinstance3d.rst b/classes/class_visualinstance3d.rst index df8325d75d0d..c3bfc976f8e3 100644 --- a/classes/class_visualinstance3d.rst +++ b/classes/class_visualinstance3d.rst @@ -226,3 +226,4 @@ Based on ``value``, enables or disables the specified layer in the :ref:`layers< .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visualshader.rst b/classes/class_visualshader.rst index ea9897af0413..0a54c0a16063 100644 --- a/classes/class_visualshader.rst +++ b/classes/class_visualshader.rst @@ -574,3 +574,4 @@ Sets the position of the specified node. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visualshadernode.rst b/classes/class_visualshadernode.rst index d6fba6ef2b5d..4b8b9e04b7dc 100644 --- a/classes/class_visualshadernode.rst +++ b/classes/class_visualshadernode.rst @@ -264,3 +264,4 @@ Sets the default ``value`` for the selected input ``port``. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visualshadernodebillboard.rst b/classes/class_visualshadernodebillboard.rst index e49ee1aeb4dd..2fd9828aa998 100644 --- a/classes/class_visualshadernodebillboard.rst +++ b/classes/class_visualshadernodebillboard.rst @@ -135,3 +135,4 @@ If ``true``, the shader will keep the scale set for the mesh. Otherwise, the sca .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visualshadernodebooleanconstant.rst b/classes/class_visualshadernodebooleanconstant.rst index 5d6ca20b8042..32da5a467673 100644 --- a/classes/class_visualshadernodebooleanconstant.rst +++ b/classes/class_visualshadernodebooleanconstant.rst @@ -63,3 +63,4 @@ A boolean constant which represents a state of this node. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visualshadernodebooleanparameter.rst b/classes/class_visualshadernodebooleanparameter.rst index cc3bbf137084..3e9ffa31ee46 100644 --- a/classes/class_visualshadernodebooleanparameter.rst +++ b/classes/class_visualshadernodebooleanparameter.rst @@ -80,3 +80,4 @@ Enables usage of the :ref:`default_value` constant which represents a state of this node. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visualshadernodecolorfunc.rst b/classes/class_visualshadernodecolorfunc.rst index 4c6fdd9e756c..442dbec4048f 100644 --- a/classes/class_visualshadernodecolorfunc.rst +++ b/classes/class_visualshadernodecolorfunc.rst @@ -132,3 +132,4 @@ A function to be applied to the input color. See :ref:`Function` formatted as a colo .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visualshadernodeif.rst b/classes/class_visualshadernodeif.rst index 8e84a1655edf..3021755ae046 100644 --- a/classes/class_visualshadernodeif.rst +++ b/classes/class_visualshadernodeif.rst @@ -27,3 +27,4 @@ First two ports are scalar floating-point numbers to compare, third is tolerance .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visualshadernodeinput.rst b/classes/class_visualshadernodeinput.rst index cd31d550efbb..1c26489150e9 100644 --- a/classes/class_visualshadernodeinput.rst +++ b/classes/class_visualshadernodeinput.rst @@ -114,3 +114,4 @@ Returns a translated name of the current constant in the Godot Shader Language. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visualshadernodeintconstant.rst b/classes/class_visualshadernodeintconstant.rst index b44e73dfa824..a66a552c211b 100644 --- a/classes/class_visualshadernodeintconstant.rst +++ b/classes/class_visualshadernodeintconstant.rst @@ -61,3 +61,4 @@ An integer constant which represents a state of this node. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visualshadernodeintfunc.rst b/classes/class_visualshadernodeintfunc.rst index cd2cfda72f0e..9e26fff36ccb 100644 --- a/classes/class_visualshadernodeintfunc.rst +++ b/classes/class_visualshadernodeintfunc.rst @@ -116,3 +116,4 @@ A function to be applied to the scalar. See :ref:`Function` f .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visualshadernodelinearscenedepth.rst b/classes/class_visualshadernodelinearscenedepth.rst index 72041e3bbce4..2f1979ebbdbd 100644 --- a/classes/class_visualshadernodelinearscenedepth.rst +++ b/classes/class_visualshadernodelinearscenedepth.rst @@ -27,3 +27,4 @@ This node can be used in fragment shaders. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visualshadernodemix.rst b/classes/class_visualshadernodemix.rst index fa72e2a29f74..6ef979776495 100644 --- a/classes/class_visualshadernodemix.rst +++ b/classes/class_visualshadernodemix.rst @@ -140,3 +140,4 @@ A type of operands and returned value. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visualshadernodemultiplyadd.rst b/classes/class_visualshadernodemultiplyadd.rst index 4b003949a396..a18fadfdf574 100644 --- a/classes/class_visualshadernodemultiplyadd.rst +++ b/classes/class_visualshadernodemultiplyadd.rst @@ -116,3 +116,4 @@ A type of operands and returned value. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visualshadernodeouterproduct.rst b/classes/class_visualshadernodeouterproduct.rst index 8461be7b8b3a..32fe7d4d7be2 100644 --- a/classes/class_visualshadernodeouterproduct.rst +++ b/classes/class_visualshadernodeouterproduct.rst @@ -27,3 +27,4 @@ Description .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visualshadernodeoutput.rst b/classes/class_visualshadernodeoutput.rst index 596256554154..dddcc17f526c 100644 --- a/classes/class_visualshadernodeoutput.rst +++ b/classes/class_visualshadernodeoutput.rst @@ -29,3 +29,4 @@ This visual shader node is present in all shader graphs in form of "Output" bloc .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visualshadernodeparameter.rst b/classes/class_visualshadernodeparameter.rst index 9363b6f16ee3..0750b5c00208 100644 --- a/classes/class_visualshadernodeparameter.rst +++ b/classes/class_visualshadernodeparameter.rst @@ -129,3 +129,4 @@ Defines the scope of the parameter. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visualshadernodeparameterref.rst b/classes/class_visualshadernodeparameterref.rst index fa344e88f548..db84f4a7b1f7 100644 --- a/classes/class_visualshadernodeparameterref.rst +++ b/classes/class_visualshadernodeparameterref.rst @@ -61,3 +61,4 @@ The name of the parameter which this reference points to. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visualshadernodeparticleaccelerator.rst b/classes/class_visualshadernodeparticleaccelerator.rst index d69d4e8a00f7..52aade37abde 100644 --- a/classes/class_visualshadernodeparticleaccelerator.rst +++ b/classes/class_visualshadernodeparticleaccelerator.rst @@ -108,3 +108,4 @@ Defines in what manner the particles will be accelerated. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visualshadernodeparticleboxemitter.rst b/classes/class_visualshadernodeparticleboxemitter.rst index bd3befe7f8ce..2e9043e58504 100644 --- a/classes/class_visualshadernodeparticleboxemitter.rst +++ b/classes/class_visualshadernodeparticleboxemitter.rst @@ -27,3 +27,4 @@ Description .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visualshadernodeparticleconevelocity.rst b/classes/class_visualshadernodeparticleconevelocity.rst index 9cfb0000cb59..b0c7f8b892ec 100644 --- a/classes/class_visualshadernodeparticleconevelocity.rst +++ b/classes/class_visualshadernodeparticleconevelocity.rst @@ -27,3 +27,4 @@ This node can be used in "start" step of particle shader. It defines the initial .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visualshadernodeparticleemit.rst b/classes/class_visualshadernodeparticleemit.rst index 10f25aed94f3..068f34592660 100644 --- a/classes/class_visualshadernodeparticleemit.rst +++ b/classes/class_visualshadernodeparticleemit.rst @@ -116,3 +116,4 @@ Flags used to override the properties defined in the sub-emitter's process mater .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visualshadernodeparticleemitter.rst b/classes/class_visualshadernodeparticleemitter.rst index acbd47079985..76432277b627 100644 --- a/classes/class_visualshadernodeparticleemitter.rst +++ b/classes/class_visualshadernodeparticleemitter.rst @@ -63,3 +63,4 @@ If ``true``, the result of this emitter is projected to 2D space. By default it .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visualshadernodeparticlemeshemitter.rst b/classes/class_visualshadernodeparticlemeshemitter.rst index e647e5227326..58a7a706ef50 100644 --- a/classes/class_visualshadernodeparticlemeshemitter.rst +++ b/classes/class_visualshadernodeparticlemeshemitter.rst @@ -99,3 +99,4 @@ If ``true``, the particles will emit from all surfaces of the mesh. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visualshadernodeparticlemultiplybyaxisangle.rst b/classes/class_visualshadernodeparticlemultiplybyaxisangle.rst index 6558932316ac..4008f9976090 100644 --- a/classes/class_visualshadernodeparticlemultiplybyaxisangle.rst +++ b/classes/class_visualshadernodeparticlemultiplybyaxisangle.rst @@ -61,3 +61,4 @@ If ``true``, the angle will be interpreted in degrees instead of radians. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visualshadernodeparticleoutput.rst b/classes/class_visualshadernodeparticleoutput.rst index 1b12f5b135ae..b8ba1d4477aa 100644 --- a/classes/class_visualshadernodeparticleoutput.rst +++ b/classes/class_visualshadernodeparticleoutput.rst @@ -27,3 +27,4 @@ This node defines how particles are emitted. It allows to customize e.g. positio .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visualshadernodeparticlerandomness.rst b/classes/class_visualshadernodeparticlerandomness.rst index ee1d1616c44c..f2871a4462bf 100644 --- a/classes/class_visualshadernodeparticlerandomness.rst +++ b/classes/class_visualshadernodeparticlerandomness.rst @@ -116,3 +116,4 @@ A type of operands and returned value. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visualshadernodeparticleringemitter.rst b/classes/class_visualshadernodeparticleringemitter.rst index c2c370add5e1..0bc1bfae19e0 100644 --- a/classes/class_visualshadernodeparticleringemitter.rst +++ b/classes/class_visualshadernodeparticleringemitter.rst @@ -27,3 +27,4 @@ Description .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visualshadernodeparticlesphereemitter.rst b/classes/class_visualshadernodeparticlesphereemitter.rst index fea3ff0b74ba..7d2003c5399b 100644 --- a/classes/class_visualshadernodeparticlesphereemitter.rst +++ b/classes/class_visualshadernodeparticlesphereemitter.rst @@ -27,3 +27,4 @@ Description .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visualshadernodeproximityfade.rst b/classes/class_visualshadernodeproximityfade.rst index c1e834ab5d2e..f32907ea00ae 100644 --- a/classes/class_visualshadernodeproximityfade.rst +++ b/classes/class_visualshadernodeproximityfade.rst @@ -27,3 +27,4 @@ The proximity fade effect fades out each pixel based on its distance to another .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visualshadernoderandomrange.rst b/classes/class_visualshadernoderandomrange.rst index 251690bc9774..9f8af834d35f 100644 --- a/classes/class_visualshadernoderandomrange.rst +++ b/classes/class_visualshadernoderandomrange.rst @@ -27,3 +27,4 @@ Random range node will output a pseudo-random scalar value in the specified rang .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visualshadernoderemap.rst b/classes/class_visualshadernoderemap.rst index 2cbb4974bfe7..9d8ea9289934 100644 --- a/classes/class_visualshadernoderemap.rst +++ b/classes/class_visualshadernoderemap.rst @@ -27,3 +27,4 @@ Remap will transform the input range into output range, e.g. you can change a `` .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visualshadernoderesizablebase.rst b/classes/class_visualshadernoderesizablebase.rst index 31447845e030..cbde702fa25e 100644 --- a/classes/class_visualshadernoderesizablebase.rst +++ b/classes/class_visualshadernoderesizablebase.rst @@ -63,3 +63,4 @@ The size of the node in the visual shader graph. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visualshadernodesample3d.rst b/classes/class_visualshadernodesample3d.rst index 3919ad5987b6..8cf38a225159 100644 --- a/classes/class_visualshadernodesample3d.rst +++ b/classes/class_visualshadernodesample3d.rst @@ -102,3 +102,4 @@ An input source type. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visualshadernodescreenuvtosdf.rst b/classes/class_visualshadernodescreenuvtosdf.rst index 5bcd722b892e..4df8e804f911 100644 --- a/classes/class_visualshadernodescreenuvtosdf.rst +++ b/classes/class_visualshadernodescreenuvtosdf.rst @@ -27,3 +27,4 @@ Translates to ``screen_uv_to_sdf(uv)`` in the shader language. If the UV port is .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visualshadernodesdfraymarch.rst b/classes/class_visualshadernodesdfraymarch.rst index 47e60c0bbd50..ce4b035d1b7a 100644 --- a/classes/class_visualshadernodesdfraymarch.rst +++ b/classes/class_visualshadernodesdfraymarch.rst @@ -27,3 +27,4 @@ Casts a ray against the screen SDF (signed-distance field) and returns the dista .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visualshadernodesdftoscreenuv.rst b/classes/class_visualshadernodesdftoscreenuv.rst index 481e5ba4aeb8..6aab48f89e2d 100644 --- a/classes/class_visualshadernodesdftoscreenuv.rst +++ b/classes/class_visualshadernodesdftoscreenuv.rst @@ -27,3 +27,4 @@ Translates to ``sdf_to_screen_uv(sdf_pos)`` in the shader language. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visualshadernodesmoothstep.rst b/classes/class_visualshadernodesmoothstep.rst index bf35f60e1f72..b8a4b7a8471c 100644 --- a/classes/class_visualshadernodesmoothstep.rst +++ b/classes/class_visualshadernodesmoothstep.rst @@ -142,3 +142,4 @@ A type of operands and returned value. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visualshadernodestep.rst b/classes/class_visualshadernodestep.rst index 353883f58022..4d37fe8e3a55 100644 --- a/classes/class_visualshadernodestep.rst +++ b/classes/class_visualshadernodestep.rst @@ -142,3 +142,4 @@ A type of operands and returned value. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visualshadernodeswitch.rst b/classes/class_visualshadernodeswitch.rst index e582f8f6bd63..55e7c9cf6534 100644 --- a/classes/class_visualshadernodeswitch.rst +++ b/classes/class_visualshadernodeswitch.rst @@ -148,3 +148,4 @@ A type of operands and returned value. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visualshadernodetexture.rst b/classes/class_visualshadernodetexture.rst index 82e958d5b6c2..d9c926d5f9d7 100644 --- a/classes/class_visualshadernodetexture.rst +++ b/classes/class_visualshadernodetexture.rst @@ -228,3 +228,4 @@ Specifies the type of the texture if :ref:`source` constant which represents the state of t .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visualshadernodetransformdecompose.rst b/classes/class_visualshadernodetransformdecompose.rst index 2b29bb6f1873..21add3494e2b 100644 --- a/classes/class_visualshadernodetransformdecompose.rst +++ b/classes/class_visualshadernodetransformdecompose.rst @@ -27,3 +27,4 @@ Takes a 4x4 transform matrix and decomposes it into four ``vec3`` values, one fr .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visualshadernodetransformfunc.rst b/classes/class_visualshadernodetransformfunc.rst index fae041d77437..6329aac5f671 100644 --- a/classes/class_visualshadernodetransformfunc.rst +++ b/classes/class_visualshadernodetransformfunc.rst @@ -100,3 +100,4 @@ The function to be computed. See :ref:`Function` constant which represents the state of this node .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visualshadernodevec2parameter.rst b/classes/class_visualshadernodevec2parameter.rst index 5f0290b06f44..3876e2fff410 100644 --- a/classes/class_visualshadernodevec2parameter.rst +++ b/classes/class_visualshadernodevec2parameter.rst @@ -80,3 +80,4 @@ Enables usage of the :ref:`default_value` constant which represents the state of this node .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visualshadernodevec3parameter.rst b/classes/class_visualshadernodevec3parameter.rst index ac964d42b95a..06b5da1990d9 100644 --- a/classes/class_visualshadernodevec3parameter.rst +++ b/classes/class_visualshadernodevec3parameter.rst @@ -80,3 +80,4 @@ Enables usage of the :ref:`default_value`) constant whic .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_visualshadernodevec4parameter.rst b/classes/class_visualshadernodevec4parameter.rst index 35ed2f7e81fe..5f0b22e9c2a5 100644 --- a/classes/class_visualshadernodevec4parameter.rst +++ b/classes/class_visualshadernodevec4parameter.rst @@ -80,3 +80,4 @@ Enables usage of the :ref:`default_value` with ``create_visual_debug`` enable .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_voxelgidata.rst b/classes/class_voxelgidata.rst index ecbe4b03b33d..bc14248c5534 100644 --- a/classes/class_voxelgidata.rst +++ b/classes/class_voxelgidata.rst @@ -311,3 +311,4 @@ Returns the bounds of the baked voxel data as an :ref:`AABB`, which .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_vscrollbar.rst b/classes/class_vscrollbar.rst index 2340e7638448..c33be5a06998 100644 --- a/classes/class_vscrollbar.rst +++ b/classes/class_vscrollbar.rst @@ -29,11 +29,11 @@ Properties .. table:: :widths: auto - +------------------------------------------+-----------------------+--------------------------------------------------------------------------------+ - | :ref:`SizeFlags` | size_flags_horizontal | ``0`` (overrides :ref:`Control`) | - +------------------------------------------+-----------------------+--------------------------------------------------------------------------------+ - | :ref:`SizeFlags` | size_flags_vertical | ``1`` (overrides :ref:`Control`) | - +------------------------------------------+-----------------------+--------------------------------------------------------------------------------+ + +--------------------------------------------------------+-----------------------+--------------------------------------------------------------------------------+ + | |bitfield|\<:ref:`SizeFlags`\> | size_flags_horizontal | ``0`` (overrides :ref:`Control`) | + +--------------------------------------------------------+-----------------------+--------------------------------------------------------------------------------+ + | |bitfield|\<:ref:`SizeFlags`\> | size_flags_vertical | ``1`` (overrides :ref:`Control`) | + +--------------------------------------------------------+-----------------------+--------------------------------------------------------------------------------+ .. rst-class:: classref-reftable-group @@ -210,3 +210,4 @@ Used as background when the :ref:`ScrollBar` has the GUI focus. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_vseparator.rst b/classes/class_vseparator.rst index a6be372cee97..ade81a36d940 100644 --- a/classes/class_vseparator.rst +++ b/classes/class_vseparator.rst @@ -70,3 +70,4 @@ The style for the separator line. Works best with :ref:`StyleBoxLine` | size_flags_horizontal | ``0`` (overrides :ref:`Control`) | - +------------------------------------------+-----------------------+--------------------------------------------------------------------------------+ - | :ref:`SizeFlags` | size_flags_vertical | ``1`` (overrides :ref:`Control`) | - +------------------------------------------+-----------------------+--------------------------------------------------------------------------------+ + +--------------------------------------------------------+-----------------------+--------------------------------------------------------------------------------+ + | |bitfield|\<:ref:`SizeFlags`\> | size_flags_horizontal | ``0`` (overrides :ref:`Control`) | + +--------------------------------------------------------+-----------------------+--------------------------------------------------------------------------------+ + | |bitfield|\<:ref:`SizeFlags`\> | size_flags_vertical | ``1`` (overrides :ref:`Control`) | + +--------------------------------------------------------+-----------------------+--------------------------------------------------------------------------------+ .. rst-class:: classref-reftable-group @@ -182,3 +182,4 @@ The background for the whole slider. Determines the width of the ``grabber_area` .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_vsplitcontainer.rst b/classes/class_vsplitcontainer.rst index ffd4a8390b2c..c68225bff7f3 100644 --- a/classes/class_vsplitcontainer.rst +++ b/classes/class_vsplitcontainer.rst @@ -105,3 +105,4 @@ The icon used for the grabber drawn in the middle area. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_weakref.rst b/classes/class_weakref.rst index 08bf9a5edc8e..4d59894aab75 100644 --- a/classes/class_weakref.rst +++ b/classes/class_weakref.rst @@ -56,3 +56,4 @@ Returns the :ref:`Object` this weakref is referring to. Returns `` .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_webrtcdatachannel.rst b/classes/class_webrtcdatachannel.rst index 05654c2b363d..6486ccf5b0d6 100644 --- a/classes/class_webrtcdatachannel.rst +++ b/classes/class_webrtcdatachannel.rst @@ -320,3 +320,4 @@ Returns ``true`` if the last received packet was transferred as text. See :ref:` .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_webrtcdatachannelextension.rst b/classes/class_webrtcdatachannelextension.rst index 44ff52b41e56..8ac2aa8b9674 100644 --- a/classes/class_webrtcdatachannelextension.rst +++ b/classes/class_webrtcdatachannelextension.rst @@ -325,3 +325,4 @@ void **_set_write_mode** **(** :ref:`WriteMode .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_webrtcmultiplayerpeer.rst b/classes/class_webrtcmultiplayerpeer.rst index 1df423072155..1dc714aaf607 100644 --- a/classes/class_webrtcmultiplayerpeer.rst +++ b/classes/class_webrtcmultiplayerpeer.rst @@ -166,3 +166,4 @@ Remove the peer with given ``peer_id`` from the mesh. If the peer was connected, .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_webrtcpeerconnection.rst b/classes/class_webrtcpeerconnection.rst index bc75fef6101b..310b3f823856 100644 --- a/classes/class_webrtcpeerconnection.rst +++ b/classes/class_webrtcpeerconnection.rst @@ -467,3 +467,4 @@ If ``type`` is ``"answer"`` the peer will start emitting :ref:`ice_candidate_cre .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_webrtcpeerconnectionextension.rst b/classes/class_webrtcpeerconnectionextension.rst index 39dd91b19641..4f40090e2231 100644 --- a/classes/class_webrtcpeerconnectionextension.rst +++ b/classes/class_webrtcpeerconnectionextension.rst @@ -29,7 +29,7 @@ Methods +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`_close` **(** **)** |virtual| | +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Object` | :ref:`_create_data_channel` **(** :ref:`String` p_label, :ref:`Dictionary` p_config **)** |virtual| | + | :ref:`WebRTCDataChannel` | :ref:`_create_data_channel` **(** :ref:`String` p_label, :ref:`Dictionary` p_config **)** |virtual| | +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Error` | :ref:`_create_offer` **(** **)** |virtual| | +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -89,7 +89,7 @@ void **_close** **(** **)** |virtual| .. rst-class:: classref-method -:ref:`Object` **_create_data_channel** **(** :ref:`String` p_label, :ref:`Dictionary` p_config **)** |virtual| +:ref:`WebRTCDataChannel` **_create_data_channel** **(** :ref:`String` p_label, :ref:`Dictionary` p_config **)** |virtual| .. container:: contribute @@ -213,3 +213,4 @@ void **_close** **(** **)** |virtual| .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_websocketmultiplayerpeer.rst b/classes/class_websocketmultiplayerpeer.rst index e02089dc6379..2ec1fa173b26 100644 --- a/classes/class_websocketmultiplayerpeer.rst +++ b/classes/class_websocketmultiplayerpeer.rst @@ -245,3 +245,4 @@ Returns the remote port of the given peer. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_websocketpeer.rst b/classes/class_websocketpeer.rst index 9ed8951acc8e..1cc7542a6159 100644 --- a/classes/class_websocketpeer.rst +++ b/classes/class_websocketpeer.rst @@ -500,3 +500,4 @@ Returns ``true`` if the last received packet was sent as a text payload. See :re .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_webxrinterface.rst b/classes/class_webxrinterface.rst index 70607330578b..5b26677f6d6a 100644 --- a/classes/class_webxrinterface.rst +++ b/classes/class_webxrinterface.rst @@ -644,3 +644,4 @@ Sets the display refresh rate for the current HMD. Not supported on all HMDs and .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_window.rst b/classes/class_window.rst index 0ec909cd8c64..b1a9c0e8e0b2 100644 --- a/classes/class_window.rst +++ b/classes/class_window.rst @@ -2444,3 +2444,4 @@ The background style used when the **Window** is embedded. Note that this is dra .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_workerthreadpool.rst b/classes/class_workerthreadpool.rst index f889dbd089bb..6e2cda3d4803 100644 --- a/classes/class_workerthreadpool.rst +++ b/classes/class_workerthreadpool.rst @@ -208,3 +208,4 @@ Returns :ref:`@GlobalScope.ERR_BUSY` if th .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_world2d.rst b/classes/class_world2d.rst index 40c9377cd812..48dd71d1b677 100644 --- a/classes/class_world2d.rst +++ b/classes/class_world2d.rst @@ -121,3 +121,4 @@ The :ref:`RID` of this world's physics space resource. Used by the :r .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_world3d.rst b/classes/class_world3d.rst index 236382b22d9a..0e66f4ca58ec 100644 --- a/classes/class_world3d.rst +++ b/classes/class_world3d.rst @@ -178,3 +178,4 @@ The World3D's physics space. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_worldboundaryshape2d.rst b/classes/class_worldboundaryshape2d.rst index d9b9794ef3b1..7df38521e85e 100644 --- a/classes/class_worldboundaryshape2d.rst +++ b/classes/class_worldboundaryshape2d.rst @@ -55,7 +55,9 @@ Property Descriptions - void **set_distance** **(** :ref:`float` value **)** - :ref:`float` **get_distance** **(** **)** -The line's distance from the origin. +The distance from the origin to the line, expressed in terms of :ref:`normal` (according to its direction and magnitude). Actual absolute distance from the origin to the line can be calculated as ``abs(distance) / normal.length()``. + +In the scalar equation of the line ``ax + by = d``, this is ``d``, while the ``(a, b)`` coordinates are represented by the :ref:`normal` property. .. rst-class:: classref-item-separator @@ -72,7 +74,7 @@ The line's distance from the origin. - void **set_normal** **(** :ref:`Vector2` value **)** - :ref:`Vector2` **get_normal** **(** **)** -The line's normal. Defaults to ``Vector2.UP``. +The line's normal, typically a unit vector. Its direction indicates the non-colliding half-plane. Can be of any length but zero. Defaults to ``Vector2.UP``. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)` .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)` @@ -80,3 +82,4 @@ The line's normal. Defaults to ``Vector2.UP``. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_worldboundaryshape3d.rst b/classes/class_worldboundaryshape3d.rst index 56ff177fbd7c..62d4d912a244 100644 --- a/classes/class_worldboundaryshape3d.rst +++ b/classes/class_worldboundaryshape3d.rst @@ -61,3 +61,4 @@ The :ref:`Plane` used by the **WorldBoundaryShape3D** for collision .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_worldenvironment.rst b/classes/class_worldenvironment.rst index 260e2389a398..d957c6a09b21 100644 --- a/classes/class_worldenvironment.rst +++ b/classes/class_worldenvironment.rst @@ -97,3 +97,4 @@ The :ref:`Environment` resource used by this **WorldEnvironme .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_x509certificate.rst b/classes/class_x509certificate.rst index a715e0d0e0a5..ffe0dbf26b32 100644 --- a/classes/class_x509certificate.rst +++ b/classes/class_x509certificate.rst @@ -100,3 +100,4 @@ Returns a string representation of the certificate, or an empty string if the ce .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_xmlparser.rst b/classes/class_xmlparser.rst index 70d611c3e5e4..79fd73c8cfeb 100644 --- a/classes/class_xmlparser.rst +++ b/classes/class_xmlparser.rst @@ -353,3 +353,4 @@ Skips the current section. If the node contains other elements, they will be ign .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_xranchor3d.rst b/classes/class_xranchor3d.rst index 6df4a1eb07ab..8fb9ca261c28 100644 --- a/classes/class_xranchor3d.rst +++ b/classes/class_xranchor3d.rst @@ -74,3 +74,4 @@ Returns the estimated size of the plane that was detected. Say when the anchor r .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_xrcamera3d.rst b/classes/class_xrcamera3d.rst index ecca5b766f9c..5f795fec90a8 100644 --- a/classes/class_xrcamera3d.rst +++ b/classes/class_xrcamera3d.rst @@ -36,3 +36,4 @@ Tutorials .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_xrcontroller3d.rst b/classes/class_xrcontroller3d.rst index 595570764e68..6c270f2f95a0 100644 --- a/classes/class_xrcontroller3d.rst +++ b/classes/class_xrcontroller3d.rst @@ -178,3 +178,4 @@ Returns ``true`` if the button with the given ``name`` is pressed. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_xrinterface.rst b/classes/class_xrinterface.rst index 585c73f55606..e9c8d4494b44 100644 --- a/classes/class_xrinterface.rst +++ b/classes/class_xrinterface.rst @@ -693,3 +693,4 @@ Turns the interface off. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_xrinterfaceextension.rst b/classes/class_xrinterfaceextension.rst index 4561b5aa30f2..3ba8a436756e 100644 --- a/classes/class_xrinterfaceextension.rst +++ b/classes/class_xrinterfaceextension.rst @@ -554,3 +554,4 @@ Returns a valid :ref:`RID` for a texture to which we should render th .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_xrnode3d.rst b/classes/class_xrnode3d.rst index dd8c481373c5..bdb91adebfb6 100644 --- a/classes/class_xrnode3d.rst +++ b/classes/class_xrnode3d.rst @@ -159,3 +159,4 @@ Triggers a haptic pulse on a device associated with this interface. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_xrorigin3d.rst b/classes/class_xrorigin3d.rst index 854b3a9bb380..31c8aaab479e 100644 --- a/classes/class_xrorigin3d.rst +++ b/classes/class_xrorigin3d.rst @@ -95,3 +95,4 @@ Allows you to adjust the scale to your game's units. Most AR/VR platforms assume .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_xrpose.rst b/classes/class_xrpose.rst index 3777afbdf708..d95d5d0bfbf3 100644 --- a/classes/class_xrpose.rst +++ b/classes/class_xrpose.rst @@ -234,3 +234,4 @@ Returns the :ref:`transform` with world scale a .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_xrpositionaltracker.rst b/classes/class_xrpositionaltracker.rst index e79b2811e6ca..b2f2ad96deeb 100644 --- a/classes/class_xrpositionaltracker.rst +++ b/classes/class_xrpositionaltracker.rst @@ -367,3 +367,4 @@ Sets the transform, linear velocity, angular velocity and tracking confidence fo .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_xrserver.rst b/classes/class_xrserver.rst index ce89a78e0fb0..a32116e915ff 100644 --- a/classes/class_xrserver.rst +++ b/classes/class_xrserver.rst @@ -485,3 +485,4 @@ Removes this positional ``tracker``. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_zippacker.rst b/classes/class_zippacker.rst index 7ad5e75b2871..04c2512fbc68 100644 --- a/classes/class_zippacker.rst +++ b/classes/class_zippacker.rst @@ -173,3 +173,4 @@ Needs to be called after :ref:`start_file`. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_zipreader.rst b/classes/class_zipreader.rst index 0444102075c4..015e3a424a89 100644 --- a/classes/class_zipreader.rst +++ b/classes/class_zipreader.rst @@ -113,3 +113,4 @@ Must be called after :ref:`open`. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/index.rst b/classes/index.rst index b09a656fec0d..2e5296d1878a 100644 --- a/classes/index.rst +++ b/classes/index.rst @@ -386,7 +386,6 @@ Resources class_gltfanimation class_gltfbufferview class_gltfcamera - class_gltfcollider class_gltfdocument class_gltfdocumentextension class_gltfdocumentextensionconvertimportermesh @@ -394,6 +393,7 @@ Resources class_gltfmesh class_gltfnode class_gltfphysicsbody + class_gltfphysicsshape class_gltfskeleton class_gltfskin class_gltfspecgloss @@ -437,6 +437,7 @@ Resources class_missingresource class_multimesh class_navigationmesh + class_navigationmeshsourcegeometrydata3d class_navigationpolygon class_noise class_noisetexture2d From 6d6067822f386794db96465771e02e41e1709398 Mon Sep 17 00:00:00 2001 From: smix8 <52464204+smix8@users.noreply.github.com> Date: Sun, 25 Jun 2023 19:17:02 +0200 Subject: [PATCH 026/133] Update navigation different actor types for new SourceGeometryData Updates navigation different actor types for new SourceGeometryData. --- .../navigation_different_actor_types.rst | 75 +++++++++++-------- 1 file changed, 45 insertions(+), 30 deletions(-) diff --git a/tutorials/navigation/navigation_different_actor_types.rst b/tutorials/navigation/navigation_different_actor_types.rst index 19707a510f9d..4b117a9b4ee8 100644 --- a/tutorials/navigation/navigation_different_actor_types.rst +++ b/tutorials/navigation/navigation_different_actor_types.rst @@ -16,12 +16,12 @@ The same approach can be used to distinguish between e.g. landwalking, swimming .. tabs:: .. code-tab:: gdscript GDScript - # create navigation mesh resources for each actor size + # Create a navigation mesh resource for each actor size. var navigation_mesh_standard_size: NavigationMesh = NavigationMesh.new() var navigation_mesh_small_size: NavigationMesh = NavigationMesh.new() var navigation_mesh_huge_size: NavigationMesh = NavigationMesh.new() - # set appropriated agent parameters + # Set appropriated agent parameters. navigation_mesh_standard_size.agent_radius = 0.5 navigation_mesh_standard_size.agent_height = 1.8 navigation_mesh_small_size.agent_radius = 0.25 @@ -29,38 +29,53 @@ The same approach can be used to distinguish between e.g. landwalking, swimming navigation_mesh_huge_size.agent_radius = 1.5 navigation_mesh_huge_size.agent_height = 2.5 - # get the root node for the baking to parse geometry + # Get the root node to parse geometry for the baking. var root_node: Node3D = get_node("NavigationMeshBakingRootNode") - # bake the navigation geometry for each agent size - NavigationMeshGenerator.bake(navigation_mesh_standard_size, root_node) - NavigationMeshGenerator.bake(navigation_mesh_small_size, root_node) - NavigationMeshGenerator.bake(navigation_mesh_huge_size, root_node) + # Create the source geometry resource that will hold the parsed geometry data. + var source_geometry_data: NavigationMeshSourceGeometryData3D = NavigationMeshSourceGeometryData3D.new() - # create different navigation maps on the NavigationServer + # Parse the source geometry from the SceneTree on the main thread. + # The navigation mesh is only required for the parse settings so any of the three will do. + NavigationServer3D.parse_source_geometry_data(navigation_mesh_standard_size, source_geometry_data, root_node) + + # Bake the navigation geometry for each agent size from the same source geometry. + # If required for performance this baking step could also be done on background threads. + NavigationServer3D.bake_from_source_geometry_data(navigation_mesh_standard_size, source_geometry_data) + NavigationServer3D.bake_from_source_geometry_data(navigation_mesh_small_size, source_geometry_data) + NavigationServer3D.bake_from_source_geometry_data(navigation_mesh_huge_size, source_geometry_data) + + # Create different navigation maps on the NavigationServer. var navigation_map_standard: RID = NavigationServer3D.map_create() var navigation_map_small: RID = NavigationServer3D.map_create() var navigation_map_huge: RID = NavigationServer3D.map_create() - # create a region for each map - var navigation_map_standard_region: RID = NavigationServer3D.region_create() - var navigation_map_small_region: RID = NavigationServer3D.region_create() - var navigation_map_huge_region: RID = NavigationServer3D.region_create() - - # set navigation mesh for each region - NavigationServer3D.region_set_navigation_mesh(navigation_map_standard_region, navigation_mesh_standard_size) - NavigationServer3D.region_set_navigation_mesh(navigation_map_small_region, navigation_mesh_small_size) - NavigationServer3D.region_set_navigation_mesh(navigation_map_huge_region, navigation_mesh_huge_size) - - # add regions to maps - navigation_map_standard_region.region_set_map(navigation_map_standard_region, navigation_map_standard) - navigation_map_small_region.region_set_map(navigation_map_small_region, navigation_map_small) - navigation_map_huge_region.region_set_map(navigation_map_huge_region, navigation_map_huge) - - # wait a physics frame for sync - await get_tree().physics_frame - - # query paths for each size - var path_standard_agent = NavigationServer3D.map_get_path(navigation_map_standard, start_pos, end_pos, true) - var path_small_agent = NavigationServer3D.map_get_path(navigation_mesh_small_size, start_pos, end_pos, true) - var path_huge_agent = NavigationServer3D.map_get_path(navigation_map_huge, start_pos, end_pos, true) + # Set the new navigation maps as active. + NavigationServer3D.map_set_active(navigation_map_standard, true) + NavigationServer3D.map_set_active(navigation_map_small, true) + NavigationServer3D.map_set_active(navigation_map_huge, true) + + # Create a region for each map. + var navigation_region_standard: RID = NavigationServer3D.region_create() + var navigation_region_small: RID = NavigationServer3D.region_create() + var navigation_region_huge: RID = NavigationServer3D.region_create() + + # Add the regions to the maps. + NavigationServer3D.region_set_map(navigation_region_standard, navigation_map_standard) + NavigationServer3D.region_set_map(navigation_region_small, navigation_map_small) + NavigationServer3D.region_set_map(navigation_region_huge, navigation_map_huge) + + # Set navigation mesh for each region. + NavigationServer3D.region_set_navigation_mesh(navigation_region_standard, navigation_mesh_standard_size) + NavigationServer3D.region_set_navigation_mesh(navigation_region_small, navigation_mesh_small_size) + NavigationServer3D.region_set_navigation_mesh(navigation_region_huge, navigation_mesh_huge_size) + + # Create start and end position for the navigation path query. + var start_pos: Vector3 = Vector3(0.0, 0.0, 0.0) + var end_pos: Vector3 = Vector3(2.0, 0.0, 0.0) + var use_corridorfunnel: bool = true + + # Query paths for each agent size. + var path_standard_agent = NavigationServer3D.map_get_path(navigation_map_standard, start_pos, end_pos, use_corridorfunnel) + var path_small_agent = NavigationServer3D.map_get_path(navigation_map_small, start_pos, end_pos, use_corridorfunnel) + var path_huge_agent = NavigationServer3D.map_get_path(navigation_map_huge, start_pos, end_pos, use_corridorfunnel) From 2bea88b4eaa92e83b6dd5de24e24d2c2451529e0 Mon Sep 17 00:00:00 2001 From: Chris Ridenour Date: Sun, 25 Jun 2023 23:34:26 -0400 Subject: [PATCH 027/133] Fix OBJECT_POSITION description to match engine behavior. --- tutorials/shaders/shader_reference/fog_shader.rst | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tutorials/shaders/shader_reference/fog_shader.rst b/tutorials/shaders/shader_reference/fog_shader.rst index 585a41494e3e..7c8dcbec84c3 100644 --- a/tutorials/shaders/shader_reference/fog_shader.rst +++ b/tutorials/shaders/shader_reference/fog_shader.rst @@ -59,8 +59,7 @@ be drawn at once. +===============================+=================================================================================================+ | in vec3 **WORLD_POSITION** | Position of current froxel cell in world space. | +-------------------------------+-------------------------------------------------------------------------------------------------+ -| in vec3 **OBJECT_POSITION** | Position of current froxel cell relative to the center of the current | -| | :ref:`FogVolume `. | +| in vec3 **OBJECT_POSITION** | Position of the center of the current :ref:`FogVolume ` in world space. | +-------------------------------+-------------------------------------------------------------------------------------------------+ | in vec3 **UVW** | 3-dimensional uv, used to map a 3D texture to the current :ref:`FogVolume `. | +-------------------------------+-------------------------------------------------------------------------------------------------+ From f57bdb3758088820f1e476956e77dd95d373fd5d Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Mon, 26 Jun 2023 10:12:28 +0200 Subject: [PATCH 028/133] Document `LIGHT_COLOR` being multiplied by `PI` in Spatial shader --- tutorials/shaders/shader_reference/spatial_shader.rst | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tutorials/shaders/shader_reference/spatial_shader.rst b/tutorials/shaders/shader_reference/spatial_shader.rst index 995196cb01c9..0a2b747fb87d 100644 --- a/tutorials/shaders/shader_reference/spatial_shader.rst +++ b/tutorials/shaders/shader_reference/spatial_shader.rst @@ -441,7 +441,10 @@ If you want the lights to add together, add the light contribution to ``DIFFUSE_ +-----------------------------------+----------------------------------------------------+ | in vec3 **LIGHT** | Light Vector, in view space. | +-----------------------------------+----------------------------------------------------+ -| in vec3 **LIGHT_COLOR** | Color of light multiplied by energy. | +| in vec3 **LIGHT_COLOR** | Color of light multiplied by ``energy * PI``. | +| | The ``PI`` multiplication is present because | +| | physically-based lighting models include a | +| | division by ``PI``. | +-----------------------------------+----------------------------------------------------+ | in float **SPECULAR_AMOUNT** | 2.0 * ``light_specular`` property for | | | ``OmniLight3D`` and ``SpotLight3D``. | From 085d4035a3784b9fc11525e75f8d0f1b2064c7ca Mon Sep 17 00:00:00 2001 From: Hannes Date: Mon, 26 Jun 2023 11:42:11 +0200 Subject: [PATCH 029/133] Changed a code example that didn't follow the style guide --- tutorials/scripting/gdscript/gdscript_styleguide.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/scripting/gdscript/gdscript_styleguide.rst b/tutorials/scripting/gdscript/gdscript_styleguide.rst index ef314e186b76..529394956188 100644 --- a/tutorials/scripting/gdscript/gdscript_styleguide.rst +++ b/tutorials/scripting/gdscript/gdscript_styleguide.rst @@ -784,7 +784,7 @@ variables, in that order. :: - signal spawn_player(position) + signal player_spawned(position) enum Jobs {KNIGHT, WIZARD, ROGUE, HEALER, SHAMAN} From 1ad5d2c8e7c6d1c7aecd6ba96de669d609d507de Mon Sep 17 00:00:00 2001 From: Bastiaan Olij Date: Wed, 28 Jun 2023 12:16:38 +1000 Subject: [PATCH 030/133] Update OpenXR passthrough documentation for transparent background --- tutorials/xr/openxr_passthrough.rst | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/tutorials/xr/openxr_passthrough.rst b/tutorials/xr/openxr_passthrough.rst index d8a1510ba5ac..244eec8c436b 100644 --- a/tutorials/xr/openxr_passthrough.rst +++ b/tutorials/xr/openxr_passthrough.rst @@ -15,7 +15,7 @@ Passthrough extension --------------------- OpenXR has a vendor extension for passthrough submitted by Meta. -Currently this extension is only supported on Quest but may be adopted by other headsets in the future. +Currently this extension is only supported on Quest and PICO but may be adopted by other headsets in the future. :ref:`XRInterface ` has entry points for passthrough so different interfaces can implement this feature. For :ref:`OpenXRInterface ` the meta passthrough extension is implemented here. @@ -24,9 +24,12 @@ In code you can call ``is_passthrough_supported`` to check if this extension is If so you can simply enable passthrough by calling ``start_passthrough``. You can call ``stop_passthrough`` to disable passthrough. -This will automatically set the main viewports ``transparent_bg`` property to true. -It will also result in the camera image being displayed as the background. -This will result in the background settings in the environment being ignored and alpha being applied. +You do need to make sure the background is transparent. +You need to enable the ``transparent_bg`` property on the viewport. +Some background environment settings will still fill the background with an opaque color, +you can use a ``custom color`` with a color that has alpha set to 0. + +The OpenXR runtime will display the camera image as the background. .. note:: @@ -35,7 +38,7 @@ This will result in the background settings in the environment being ignored and .. warning:: After passthrough is enabled it is possible to change settings that will break passthrough. - Be sure not to change the ``transparent_bg`` setting or the environment blend mode. + Be sure not to disable the ``transparent_bg`` setting or change the environment blend mode. This will result in the camera image no longer being visible but you still incur the overhead. Always use ``stop_passthrough`` if you wish to turn off passthrough. @@ -59,7 +62,7 @@ We need to check if ``XR_ENV_BLEND_MODE_ALPHA_BLEND`` is present in this list. If so we can tell OpenXR to expect an image that can be alpha blended with a background. To do this, we simply call ``set_environment_blend_mode(xr_interface.XR_ENV_BLEND_MODE_ALPHA_BLEND)``. -We must also set ``transparent_bg`` to true to ensure we submit the right image. +We must also set ``transparent_bg`` to true and adjust the environment to ensure we submit the right image. Putting it together ------------------- @@ -71,13 +74,14 @@ Putting the above together we can use the following code as a base: func enable_passthrough() -> bool: var xr_interface: XRInterface = XRServer.primary_interface if xr_interface and xr_interface.is_passthrough_supported(): - return xr_interface.start_passthrough() + if !xr_interface.start_passthrough(): + return false else: var modes = xr_interface.get_supported_environment_blend_modes() if xr_interface.XR_ENV_BLEND_MODE_ALPHA_BLEND in modes: xr_interface.set_environment_blend_mode(xr_interface.XR_ENV_BLEND_MODE_ALPHA_BLEND) - return true else: return false - + get_viewport().transparent_bg = true + return true From 2076e147c23bf4b06a740f2bab2431b934ec2768 Mon Sep 17 00:00:00 2001 From: ffernn Date: Wed, 28 Jun 2023 17:47:02 +1000 Subject: [PATCH 031/133] Added sky and fog shaders the the "Built-in variables" section --- tutorials/shaders/shader_reference/shading_language.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tutorials/shaders/shader_reference/shading_language.rst b/tutorials/shaders/shader_reference/shading_language.rst index 25ffdd0eb09c..3b94aba7df1c 100644 --- a/tutorials/shaders/shader_reference/shading_language.rst +++ b/tutorials/shaders/shader_reference/shading_language.rst @@ -1076,6 +1076,8 @@ For a list of the built-in variables that are available, please see the correspo - :ref:`Spatial shaders ` - :ref:`Canvas item shaders ` - :ref:`Particle shaders ` +- :ref:`Sky shaders ` +- :ref:`Fog shaders ` Built-in functions ------------------ From 029de7825e5e37df74c5e005ee6ec9215e6d7af0 Mon Sep 17 00:00:00 2001 From: Godot Organization Date: Wed, 28 Jun 2023 15:26:35 +0000 Subject: [PATCH 032/133] classref: Sync with current master branch (c83f912) --- classes/class_@gdscript.rst | 8 +- classes/class_@globalscope.rst | 2 +- classes/class_callable.rst | 4 +- classes/class_editorimportplugin.rst | 4 +- classes/class_mutex.rst | 2 +- classes/class_navigationserver3d.rst | 446 +++++++++++----------- classes/class_nodepath.rst | 1 + classes/class_particleprocessmaterial.rst | 2 +- classes/class_scenetree.rst | 4 + classes/class_window.rst | 4 +- 10 files changed, 242 insertions(+), 235 deletions(-) diff --git a/classes/class_@gdscript.rst b/classes/class_@gdscript.rst index a275778c9d6b..889fab9491f4 100644 --- a/classes/class_@gdscript.rst +++ b/classes/class_@gdscript.rst @@ -663,13 +663,13 @@ Mark the following property as assigned when the :ref:`Node` is read Mark the following method for remote procedure calls. See :doc:`High-level multiplayer <../tutorials/networking/high_level_multiplayer>`. -The accepted values: +If ``mode`` is set as ``"any_peer"``, allows any peer to call this RPC function. Otherwise, only the authority peer is allowed to call it and ``mode`` should be kept as ``"authority"``. When configuring functions as RPCs with :ref:`Node.rpc_config`, each of these modes respectively corresponds to the :ref:`MultiplayerAPI.RPC_MODE_AUTHORITY` and :ref:`MultiplayerAPI.RPC_MODE_ANY_PEER` RPC modes. See :ref:`RPCMode`. If a peer that is not the authority tries to call a function that is only allowed for the authority, the function will not be executed. If the error can be detected locally (when the RPC configuration is consistent between the local and the remote peer), an error message will be displayed on the sender peer. Otherwise, the remote peer will detect the error and print an error there. -- for ``mode`` are ``"any_peer"`` or ``"authority"``; +If ``sync`` is set as ``"call_remote"``, the function will only be executed on the remote peer, but not locally. To run this function locally too, set ``sync`` to ``"call_local"``. When configuring functions as RPCs with :ref:`Node.rpc_config`, this is equivalent to setting `call_local` to `true`. -- for ``sync`` are ``"call_remote"`` or ``"call_local"``; +The ``transfer_mode`` accepted values are ``"unreliable"``, ``"unreliable_ordered"``, or ``"reliable"``. It sets the transfer mode of the underlying :ref:`MultiplayerPeer`. See :ref:`MultiplayerPeer.transfer_mode`. -- and for ``transfer_mode`` are ``"unreliable"``, ``"unreliable_ordered"``, or ``"reliable"``. +The ``transfer_channel`` defines the channel of the underlying :ref:`MultiplayerPeer`. See :ref:`MultiplayerPeer.transfer_channel`. The order of ``mode``, ``sync`` and ``transfer_mode`` does not matter, but values related to the same argument must not be used more than once. ``transfer_channel`` always has to be the 4th argument (you must specify 3 preceding arguments). diff --git a/classes/class_@globalscope.rst b/classes/class_@globalscope.rst index ecf1080256dd..56e60da7d8e9 100644 --- a/classes/class_@globalscope.rst +++ b/classes/class_@globalscope.rst @@ -4899,7 +4899,7 @@ The :ref:`NavigationServer2D` singleton. :ref:`NavigationServer3D` **NavigationServer3D** -The :ref:`NavigationServer2D` singleton. +The :ref:`NavigationServer3D` singleton. .. rst-class:: classref-item-separator diff --git a/classes/class_callable.rst b/classes/class_callable.rst index 6dedde31a8c0..01e96d416222 100644 --- a/classes/class_callable.rst +++ b/classes/class_callable.rst @@ -402,7 +402,7 @@ Returns ``true`` if the callable's object exists and has a valid method name ass void **rpc** **(** ... **)** |vararg| |const| -Perform an RPC (Remote Procedure Call). This is used for multiplayer and is normally not available, unless the function being called has been marked as *RPC*. Calling this method on unsupported functions will result in an error. See :ref:`Node.rpc`. +Perform an RPC (Remote Procedure Call) on all connected peers. This is used for multiplayer and is normally not available, unless the function being called has been marked as *RPC* (using :ref:`@GDScript.@rpc` or :ref:`Node.rpc_config`). Calling this method on unsupported functions will result in an error. See :ref:`Node.rpc`. .. rst-class:: classref-item-separator @@ -414,7 +414,7 @@ Perform an RPC (Remote Procedure Call). This is used for multiplayer and is norm void **rpc_id** **(** :ref:`int` peer_id, ... **)** |vararg| |const| -Perform an RPC (Remote Procedure Call) on a specific peer ID (see multiplayer documentation for reference). This is used for multiplayer and is normally not available unless the function being called has been marked as *RPC*. Calling this method on unsupported functions will result in an error. See :ref:`Node.rpc_id`. +Perform an RPC (Remote Procedure Call) on a specific peer ID (see multiplayer documentation for reference). This is used for multiplayer and is normally not available unless the function being called has been marked as *RPC* (using :ref:`@GDScript.@rpc` or :ref:`Node.rpc_config`). Calling this method on unsupported functions will result in an error. See :ref:`Node.rpc_id`. .. rst-class:: classref-item-separator diff --git a/classes/class_editorimportplugin.rst b/classes/class_editorimportplugin.rst index 16a2d3d48fae..c3b34d8ab723 100644 --- a/classes/class_editorimportplugin.rst +++ b/classes/class_editorimportplugin.rst @@ -51,10 +51,10 @@ Below is an example EditorImportPlugin that imports a :ref:`Mesh` fr func _get_preset_count(): return 1 - func _get_preset_name(i): + func _get_preset_name(preset_index): return "Default" - func _get_import_options(i): + func _get_import_options(path, preset_index): return [{"name": "my_option", "default_value": false}] func _import(source_file, save_path, options, platform_variants, gen_files): diff --git a/classes/class_mutex.rst b/classes/class_mutex.rst index 0a1a29b32bf0..869ae6097742 100644 --- a/classes/class_mutex.rst +++ b/classes/class_mutex.rst @@ -87,7 +87,7 @@ Locks this **Mutex**, blocks until it is unlocked by the current owner. Tries locking this **Mutex**, but does not block. Returns ``true`` on success, ``false`` otherwise. -\ **Note:** This function returns :ref:`@GlobalScope.OK` if the thread already has ownership of the mutex. +\ **Note:** This function returns ``true`` if the thread already has ownership of the mutex. .. rst-class:: classref-item-separator diff --git a/classes/class_navigationserver3d.rst b/classes/class_navigationserver3d.rst index 7908c93c71fc..3a0e42e5cc73 100644 --- a/classes/class_navigationserver3d.rst +++ b/classes/class_navigationserver3d.rst @@ -52,227 +52,227 @@ Methods .. table:: :widths: auto - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`agent_create` **(** **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`agent_get_avoidance_enabled` **(** :ref:`RID` agent **)** |const| | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`agent_get_map` **(** :ref:`RID` agent **)** |const| | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`agent_get_paused` **(** :ref:`RID` agent **)** |const| | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`agent_get_use_3d_avoidance` **(** :ref:`RID` agent **)** |const| | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`agent_is_map_changed` **(** :ref:`RID` agent **)** |const| | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`agent_set_avoidance_callback` **(** :ref:`RID` agent, :ref:`Callable` callback **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`agent_set_avoidance_enabled` **(** :ref:`RID` agent, :ref:`bool` enabled **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`agent_set_avoidance_layers` **(** :ref:`RID` agent, :ref:`int` layers **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`agent_set_avoidance_mask` **(** :ref:`RID` agent, :ref:`int` mask **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`agent_set_avoidance_priority` **(** :ref:`RID` agent, :ref:`float` priority **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`agent_set_height` **(** :ref:`RID` agent, :ref:`float` height **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`agent_set_map` **(** :ref:`RID` agent, :ref:`RID` map **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`agent_set_max_neighbors` **(** :ref:`RID` agent, :ref:`int` count **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`agent_set_max_speed` **(** :ref:`RID` agent, :ref:`float` max_speed **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`agent_set_neighbor_distance` **(** :ref:`RID` agent, :ref:`float` distance **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`agent_set_paused` **(** :ref:`RID` agent, :ref:`bool` paused **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`agent_set_position` **(** :ref:`RID` agent, :ref:`Vector3` position **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`agent_set_radius` **(** :ref:`RID` agent, :ref:`float` radius **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`agent_set_time_horizon_agents` **(** :ref:`RID` agent, :ref:`float` time_horizon **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`agent_set_time_horizon_obstacles` **(** :ref:`RID` agent, :ref:`float` time_horizon **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`agent_set_use_3d_avoidance` **(** :ref:`RID` agent, :ref:`bool` enabled **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`agent_set_velocity` **(** :ref:`RID` agent, :ref:`Vector3` velocity **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`agent_set_velocity_forced` **(** :ref:`RID` agent, :ref:`Vector3` velocity **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`bake_from_source_geometry_data` **(** :ref:`NavigationMesh` navigation_mesh, :ref:`NavigationMeshSourceGeometryData3D` source_geometry_data, :ref:`Callable` callback **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`free_rid` **(** :ref:`RID` rid **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`get_debug_enabled` **(** **)** |const| | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID[]` | :ref:`get_maps` **(** **)** |const| | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_process_info` **(** :ref:`ProcessInfo` process_info **)** |const| | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`link_create` **(** **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector3` | :ref:`link_get_end_position` **(** :ref:`RID` link **)** |const| | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`link_get_enter_cost` **(** :ref:`RID` link **)** |const| | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`link_get_map` **(** :ref:`RID` link **)** |const| | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`link_get_navigation_layers` **(** :ref:`RID` link **)** |const| | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`link_get_owner_id` **(** :ref:`RID` link **)** |const| | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector3` | :ref:`link_get_start_position` **(** :ref:`RID` link **)** |const| | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`link_get_travel_cost` **(** :ref:`RID` link **)** |const| | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`link_is_bidirectional` **(** :ref:`RID` link **)** |const| | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`link_set_bidirectional` **(** :ref:`RID` link, :ref:`bool` bidirectional **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`link_set_end_position` **(** :ref:`RID` link, :ref:`Vector3` position **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`link_set_enter_cost` **(** :ref:`RID` link, :ref:`float` enter_cost **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`link_set_map` **(** :ref:`RID` link, :ref:`RID` map **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`link_set_navigation_layers` **(** :ref:`RID` link, :ref:`int` navigation_layers **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`link_set_owner_id` **(** :ref:`RID` link, :ref:`int` owner_id **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`link_set_start_position` **(** :ref:`RID` link, :ref:`Vector3` position **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`link_set_travel_cost` **(** :ref:`RID` link, :ref:`float` travel_cost **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`map_create` **(** **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`map_force_update` **(** :ref:`RID` map **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID[]` | :ref:`map_get_agents` **(** :ref:`RID` map **)** |const| | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`map_get_cell_height` **(** :ref:`RID` map **)** |const| | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`map_get_cell_size` **(** :ref:`RID` map **)** |const| | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector3` | :ref:`map_get_closest_point` **(** :ref:`RID` map, :ref:`Vector3` to_point **)** |const| | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector3` | :ref:`map_get_closest_point_normal` **(** :ref:`RID` map, :ref:`Vector3` to_point **)** |const| | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`map_get_closest_point_owner` **(** :ref:`RID` map, :ref:`Vector3` to_point **)** |const| | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector3` | :ref:`map_get_closest_point_to_segment` **(** :ref:`RID` map, :ref:`Vector3` start, :ref:`Vector3` end, :ref:`bool` use_collision=false **)** |const| | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`map_get_edge_connection_margin` **(** :ref:`RID` map **)** |const| | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`map_get_link_connection_radius` **(** :ref:`RID` map **)** |const| | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID[]` | :ref:`map_get_links` **(** :ref:`RID` map **)** |const| | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID[]` | :ref:`map_get_obstacles` **(** :ref:`RID` map **)** |const| | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedVector3Array` | :ref:`map_get_path` **(** :ref:`RID` map, :ref:`Vector3` origin, :ref:`Vector3` destination, :ref:`bool` optimize, :ref:`int` navigation_layers=1 **)** |const| | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID[]` | :ref:`map_get_regions` **(** :ref:`RID` map **)** |const| | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector3` | :ref:`map_get_up` **(** :ref:`RID` map **)** |const| | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`map_get_use_edge_connections` **(** :ref:`RID` map **)** |const| | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`map_is_active` **(** :ref:`RID` map **)** |const| | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`map_set_active` **(** :ref:`RID` map, :ref:`bool` active **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`map_set_cell_height` **(** :ref:`RID` map, :ref:`float` cell_height **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`map_set_cell_size` **(** :ref:`RID` map, :ref:`float` cell_size **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`map_set_edge_connection_margin` **(** :ref:`RID` map, :ref:`float` margin **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`map_set_link_connection_radius` **(** :ref:`RID` map, :ref:`float` radius **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`map_set_up` **(** :ref:`RID` map, :ref:`Vector3` up **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`map_set_use_edge_connections` **(** :ref:`RID` map, :ref:`bool` enabled **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`obstacle_create` **(** **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`obstacle_get_avoidance_enabled` **(** :ref:`RID` obstacle **)** |const| | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`obstacle_get_map` **(** :ref:`RID` obstacle **)** |const| | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`obstacle_get_paused` **(** :ref:`RID` obstacle **)** |const| | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`obstacle_get_use_3d_avoidance` **(** :ref:`RID` obstacle **)** |const| | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`obstacle_set_avoidance_enabled` **(** :ref:`RID` obstacle, :ref:`bool` enabled **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`obstacle_set_avoidance_layers` **(** :ref:`RID` obstacle, :ref:`int` layers **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`obstacle_set_height` **(** :ref:`RID` obstacle, :ref:`float` height **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`obstacle_set_map` **(** :ref:`RID` obstacle, :ref:`RID` map **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`obstacle_set_paused` **(** :ref:`RID` obstacle, :ref:`bool` paused **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`obstacle_set_position` **(** :ref:`RID` obstacle, :ref:`Vector3` position **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`obstacle_set_radius` **(** :ref:`RID` obstacle, :ref:`float` radius **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`obstacle_set_use_3d_avoidance` **(** :ref:`RID` obstacle, :ref:`bool` enabled **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`obstacle_set_velocity` **(** :ref:`RID` obstacle, :ref:`Vector3` velocity **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`obstacle_set_vertices` **(** :ref:`RID` obstacle, :ref:`PackedVector3Array` vertices **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`parse_source_geometry_data` **(** :ref:`NavigationMesh` navigation_mesh, :ref:`NavigationMeshSourceGeometryData3D` source_geometry_data, :ref:`Node` root_node, :ref:`Callable` callback **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`query_path` **(** :ref:`NavigationPathQueryParameters3D` parameters, :ref:`NavigationPathQueryResult3D` result **)** |const| | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`region_bake_navigation_mesh` **(** :ref:`NavigationMesh` navigation_mesh, :ref:`Node` root_node **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`region_create` **(** **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector3` | :ref:`region_get_connection_pathway_end` **(** :ref:`RID` region, :ref:`int` connection **)** |const| | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector3` | :ref:`region_get_connection_pathway_start` **(** :ref:`RID` region, :ref:`int` connection **)** |const| | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`region_get_connections_count` **(** :ref:`RID` region **)** |const| | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`region_get_enter_cost` **(** :ref:`RID` region **)** |const| | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`region_get_map` **(** :ref:`RID` region **)** |const| | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`region_get_navigation_layers` **(** :ref:`RID` region **)** |const| | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`region_get_owner_id` **(** :ref:`RID` region **)** |const| | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`region_get_travel_cost` **(** :ref:`RID` region **)** |const| | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`region_get_use_edge_connections` **(** :ref:`RID` region **)** |const| | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`region_owns_point` **(** :ref:`RID` region, :ref:`Vector3` point **)** |const| | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`region_set_enter_cost` **(** :ref:`RID` region, :ref:`float` enter_cost **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`region_set_map` **(** :ref:`RID` region, :ref:`RID` map **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`region_set_navigation_layers` **(** :ref:`RID` region, :ref:`int` navigation_layers **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`region_set_navigation_mesh` **(** :ref:`RID` region, :ref:`NavigationMesh` navigation_mesh **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`region_set_owner_id` **(** :ref:`RID` region, :ref:`int` owner_id **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`region_set_transform` **(** :ref:`RID` region, :ref:`Transform3D` transform **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`region_set_travel_cost` **(** :ref:`RID` region, :ref:`float` travel_cost **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`region_set_use_edge_connections` **(** :ref:`RID` region, :ref:`bool` enabled **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`set_active` **(** :ref:`bool` active **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | void | :ref:`set_debug_enabled` **(** :ref:`bool` enabled **)** | - +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`agent_create` **(** **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`agent_get_avoidance_enabled` **(** :ref:`RID` agent **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`agent_get_map` **(** :ref:`RID` agent **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`agent_get_paused` **(** :ref:`RID` agent **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`agent_get_use_3d_avoidance` **(** :ref:`RID` agent **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`agent_is_map_changed` **(** :ref:`RID` agent **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`agent_set_avoidance_callback` **(** :ref:`RID` agent, :ref:`Callable` callback **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`agent_set_avoidance_enabled` **(** :ref:`RID` agent, :ref:`bool` enabled **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`agent_set_avoidance_layers` **(** :ref:`RID` agent, :ref:`int` layers **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`agent_set_avoidance_mask` **(** :ref:`RID` agent, :ref:`int` mask **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`agent_set_avoidance_priority` **(** :ref:`RID` agent, :ref:`float` priority **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`agent_set_height` **(** :ref:`RID` agent, :ref:`float` height **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`agent_set_map` **(** :ref:`RID` agent, :ref:`RID` map **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`agent_set_max_neighbors` **(** :ref:`RID` agent, :ref:`int` count **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`agent_set_max_speed` **(** :ref:`RID` agent, :ref:`float` max_speed **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`agent_set_neighbor_distance` **(** :ref:`RID` agent, :ref:`float` distance **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`agent_set_paused` **(** :ref:`RID` agent, :ref:`bool` paused **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`agent_set_position` **(** :ref:`RID` agent, :ref:`Vector3` position **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`agent_set_radius` **(** :ref:`RID` agent, :ref:`float` radius **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`agent_set_time_horizon_agents` **(** :ref:`RID` agent, :ref:`float` time_horizon **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`agent_set_time_horizon_obstacles` **(** :ref:`RID` agent, :ref:`float` time_horizon **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`agent_set_use_3d_avoidance` **(** :ref:`RID` agent, :ref:`bool` enabled **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`agent_set_velocity` **(** :ref:`RID` agent, :ref:`Vector3` velocity **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`agent_set_velocity_forced` **(** :ref:`RID` agent, :ref:`Vector3` velocity **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`bake_from_source_geometry_data` **(** :ref:`NavigationMesh` navigation_mesh, :ref:`NavigationMeshSourceGeometryData3D` source_geometry_data, :ref:`Callable` callback=Callable() **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`free_rid` **(** :ref:`RID` rid **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`get_debug_enabled` **(** **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID[]` | :ref:`get_maps` **(** **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_process_info` **(** :ref:`ProcessInfo` process_info **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`link_create` **(** **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector3` | :ref:`link_get_end_position` **(** :ref:`RID` link **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`link_get_enter_cost` **(** :ref:`RID` link **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`link_get_map` **(** :ref:`RID` link **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`link_get_navigation_layers` **(** :ref:`RID` link **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`link_get_owner_id` **(** :ref:`RID` link **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector3` | :ref:`link_get_start_position` **(** :ref:`RID` link **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`link_get_travel_cost` **(** :ref:`RID` link **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`link_is_bidirectional` **(** :ref:`RID` link **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`link_set_bidirectional` **(** :ref:`RID` link, :ref:`bool` bidirectional **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`link_set_end_position` **(** :ref:`RID` link, :ref:`Vector3` position **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`link_set_enter_cost` **(** :ref:`RID` link, :ref:`float` enter_cost **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`link_set_map` **(** :ref:`RID` link, :ref:`RID` map **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`link_set_navigation_layers` **(** :ref:`RID` link, :ref:`int` navigation_layers **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`link_set_owner_id` **(** :ref:`RID` link, :ref:`int` owner_id **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`link_set_start_position` **(** :ref:`RID` link, :ref:`Vector3` position **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`link_set_travel_cost` **(** :ref:`RID` link, :ref:`float` travel_cost **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`map_create` **(** **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`map_force_update` **(** :ref:`RID` map **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID[]` | :ref:`map_get_agents` **(** :ref:`RID` map **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`map_get_cell_height` **(** :ref:`RID` map **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`map_get_cell_size` **(** :ref:`RID` map **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector3` | :ref:`map_get_closest_point` **(** :ref:`RID` map, :ref:`Vector3` to_point **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector3` | :ref:`map_get_closest_point_normal` **(** :ref:`RID` map, :ref:`Vector3` to_point **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`map_get_closest_point_owner` **(** :ref:`RID` map, :ref:`Vector3` to_point **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector3` | :ref:`map_get_closest_point_to_segment` **(** :ref:`RID` map, :ref:`Vector3` start, :ref:`Vector3` end, :ref:`bool` use_collision=false **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`map_get_edge_connection_margin` **(** :ref:`RID` map **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`map_get_link_connection_radius` **(** :ref:`RID` map **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID[]` | :ref:`map_get_links` **(** :ref:`RID` map **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID[]` | :ref:`map_get_obstacles` **(** :ref:`RID` map **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedVector3Array` | :ref:`map_get_path` **(** :ref:`RID` map, :ref:`Vector3` origin, :ref:`Vector3` destination, :ref:`bool` optimize, :ref:`int` navigation_layers=1 **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID[]` | :ref:`map_get_regions` **(** :ref:`RID` map **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector3` | :ref:`map_get_up` **(** :ref:`RID` map **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`map_get_use_edge_connections` **(** :ref:`RID` map **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`map_is_active` **(** :ref:`RID` map **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`map_set_active` **(** :ref:`RID` map, :ref:`bool` active **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`map_set_cell_height` **(** :ref:`RID` map, :ref:`float` cell_height **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`map_set_cell_size` **(** :ref:`RID` map, :ref:`float` cell_size **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`map_set_edge_connection_margin` **(** :ref:`RID` map, :ref:`float` margin **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`map_set_link_connection_radius` **(** :ref:`RID` map, :ref:`float` radius **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`map_set_up` **(** :ref:`RID` map, :ref:`Vector3` up **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`map_set_use_edge_connections` **(** :ref:`RID` map, :ref:`bool` enabled **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`obstacle_create` **(** **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`obstacle_get_avoidance_enabled` **(** :ref:`RID` obstacle **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`obstacle_get_map` **(** :ref:`RID` obstacle **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`obstacle_get_paused` **(** :ref:`RID` obstacle **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`obstacle_get_use_3d_avoidance` **(** :ref:`RID` obstacle **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`obstacle_set_avoidance_enabled` **(** :ref:`RID` obstacle, :ref:`bool` enabled **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`obstacle_set_avoidance_layers` **(** :ref:`RID` obstacle, :ref:`int` layers **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`obstacle_set_height` **(** :ref:`RID` obstacle, :ref:`float` height **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`obstacle_set_map` **(** :ref:`RID` obstacle, :ref:`RID` map **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`obstacle_set_paused` **(** :ref:`RID` obstacle, :ref:`bool` paused **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`obstacle_set_position` **(** :ref:`RID` obstacle, :ref:`Vector3` position **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`obstacle_set_radius` **(** :ref:`RID` obstacle, :ref:`float` radius **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`obstacle_set_use_3d_avoidance` **(** :ref:`RID` obstacle, :ref:`bool` enabled **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`obstacle_set_velocity` **(** :ref:`RID` obstacle, :ref:`Vector3` velocity **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`obstacle_set_vertices` **(** :ref:`RID` obstacle, :ref:`PackedVector3Array` vertices **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`parse_source_geometry_data` **(** :ref:`NavigationMesh` navigation_mesh, :ref:`NavigationMeshSourceGeometryData3D` source_geometry_data, :ref:`Node` root_node, :ref:`Callable` callback=Callable() **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`query_path` **(** :ref:`NavigationPathQueryParameters3D` parameters, :ref:`NavigationPathQueryResult3D` result **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`region_bake_navigation_mesh` **(** :ref:`NavigationMesh` navigation_mesh, :ref:`Node` root_node **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`region_create` **(** **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector3` | :ref:`region_get_connection_pathway_end` **(** :ref:`RID` region, :ref:`int` connection **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector3` | :ref:`region_get_connection_pathway_start` **(** :ref:`RID` region, :ref:`int` connection **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`region_get_connections_count` **(** :ref:`RID` region **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`region_get_enter_cost` **(** :ref:`RID` region **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`region_get_map` **(** :ref:`RID` region **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`region_get_navigation_layers` **(** :ref:`RID` region **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`region_get_owner_id` **(** :ref:`RID` region **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`region_get_travel_cost` **(** :ref:`RID` region **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`region_get_use_edge_connections` **(** :ref:`RID` region **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`region_owns_point` **(** :ref:`RID` region, :ref:`Vector3` point **)** |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`region_set_enter_cost` **(** :ref:`RID` region, :ref:`float` enter_cost **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`region_set_map` **(** :ref:`RID` region, :ref:`RID` map **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`region_set_navigation_layers` **(** :ref:`RID` region, :ref:`int` navigation_layers **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`region_set_navigation_mesh` **(** :ref:`RID` region, :ref:`NavigationMesh` navigation_mesh **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`region_set_owner_id` **(** :ref:`RID` region, :ref:`int` owner_id **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`region_set_transform` **(** :ref:`RID` region, :ref:`Transform3D` transform **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`region_set_travel_cost` **(** :ref:`RID` region, :ref:`float` travel_cost **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`region_set_use_edge_connections` **(** :ref:`RID` region, :ref:`bool` enabled **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`set_active` **(** :ref:`bool` active **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`set_debug_enabled` **(** :ref:`bool` enabled **)** | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator @@ -711,7 +711,7 @@ Replaces the internal velocity in the collision avoidance simulation with ``velo .. rst-class:: classref-method -void **bake_from_source_geometry_data** **(** :ref:`NavigationMesh` navigation_mesh, :ref:`NavigationMeshSourceGeometryData3D` source_geometry_data, :ref:`Callable` callback **)** +void **bake_from_source_geometry_data** **(** :ref:`NavigationMesh` navigation_mesh, :ref:`NavigationMeshSourceGeometryData3D` source_geometry_data, :ref:`Callable` callback=Callable() **)** Bakes the provided ``navigation_mesh`` with the data from the provided ``source_geometry_data``. After the process is finished the optional ``callback`` will be called. @@ -1461,7 +1461,7 @@ Sets the outline vertices for the obstacle. If the vertices are winded in clockw .. rst-class:: classref-method -void **parse_source_geometry_data** **(** :ref:`NavigationMesh` navigation_mesh, :ref:`NavigationMeshSourceGeometryData3D` source_geometry_data, :ref:`Node` root_node, :ref:`Callable` callback **)** +void **parse_source_geometry_data** **(** :ref:`NavigationMesh` navigation_mesh, :ref:`NavigationMeshSourceGeometryData3D` source_geometry_data, :ref:`Node` root_node, :ref:`Callable` callback=Callable() **)** Parses the :ref:`SceneTree` for source geometry according to the properties of ``navigation_mesh``. Updates the provided ``source_geometry_data`` resource with the resulting data. The resource can then be used to bake a navigation mesh with :ref:`bake_from_source_geometry_data`. After the process is finished the optional ``callback`` will be called. diff --git a/classes/class_nodepath.rst b/classes/class_nodepath.rst index 4a570d232eaa..f9f3a9b2adb5 100644 --- a/classes/class_nodepath.rst +++ b/classes/class_nodepath.rst @@ -33,6 +33,7 @@ Some examples of NodePaths include the following: ^"." # The current node. ^".." # The parent node. ^"../C" # A sibling node C. + ^"../.." # The grandparent node. # A leading slash means it is absolute from the SceneTree. ^"/root" # Equivalent to get_tree().get_root(). ^"/root/Main" # If your main scene's root node were named "Main". diff --git a/classes/class_particleprocessmaterial.rst b/classes/class_particleprocessmaterial.rst index 26f468bf8b15..f418956244b5 100644 --- a/classes/class_particleprocessmaterial.rst +++ b/classes/class_particleprocessmaterial.rst @@ -1318,7 +1318,7 @@ Minimum equivalent of :ref:`initial_velocity_max` value **)** - :ref:`float` **get_lifetime_randomness** **(** **)** -Particle lifetime randomness ratio. The lifetime will be multiplied by a value interpolated between ``1.0`` and a random number less than one. For example a random ratio of ``0.4`` would scale the original lifetime between ``0.4-1.0`` of its original value. +Particle lifetime randomness ratio. The equation for the lifetime of a particle is ``lifetime * (1.0 - randf() * lifetime_randomness)``. For example, a :ref:`lifetime_randomness` of ``0.4`` scales the lifetime between ``0.6`` to ``1.0`` of its original value. .. rst-class:: classref-item-separator diff --git a/classes/class_scenetree.rst b/classes/class_scenetree.rst index f62cd857c8bf..2f6428f6e659 100644 --- a/classes/class_scenetree.rst +++ b/classes/class_scenetree.rst @@ -621,6 +621,8 @@ Returns the current frame number, i.e. the total frame count since the applicati Return the :ref:`MultiplayerAPI` configured for the given path, or the default one if ``for_path`` is empty. +\ **Note:** Only one :ref:`MultiplayerAPI` may be configured for any subpath. If one is configured for ``"/root/Foo"`` then calling this for ``"/root/Foo/Bar"`` will return the one configured for ``"/root/Foo"``, regardless if one is configured for that path. + .. rst-class:: classref-item-separator ---- @@ -781,6 +783,8 @@ void **set_multiplayer** **(** :ref:`MultiplayerAPI` multi Sets a custom :ref:`MultiplayerAPI` with the given ``root_path`` (controlling also the relative subpaths), or override the default one if ``root_path`` is empty. +\ **Note:** Only one :ref:`MultiplayerAPI` may be configured for any subpath. If one is configured for ``"/root/Foo"`` setting one for ``"/root/Foo/Bar"`` will be ignored. See :ref:`get_multiplayer`. + .. rst-class:: classref-item-separator ---- diff --git a/classes/class_window.rst b/classes/class_window.rst index b1a9c0e8e0b2..355ed743b7e5 100644 --- a/classes/class_window.rst +++ b/classes/class_window.rst @@ -2021,7 +2021,9 @@ Popups the **Window** centered inside its parent **Window**. ``fallback_ratio`` void **popup_centered_ratio** **(** :ref:`float` ratio=0.8 **)** -Popups the **Window** centered inside its parent **Window** and sets its size as a ``ratio`` of parent's size. +If **Window** is embedded, popups the **Window** centered inside its embedder and sets its size as a ``ratio`` of embedder's size. + +If **Window** is a native window, popups the **Window** centered inside the screen of its parent **Window** and sets its size as a ``ratio`` of the screen size. .. rst-class:: classref-item-separator From 2ee172f11a0dd3ac6a0fb2829b561e9f651e0a81 Mon Sep 17 00:00:00 2001 From: Yuri Sizov Date: Wed, 28 Jun 2023 17:52:43 +0200 Subject: [PATCH 033/133] Update the information about upcoming and currently supported releases --- about/release_policy.rst | 73 +++++++++++++++++++++------------------- 1 file changed, 38 insertions(+), 35 deletions(-) diff --git a/about/release_policy.rst b/about/release_policy.rst index b279364d6bda..0fb9836be053 100644 --- a/about/release_policy.rst +++ b/about/release_policy.rst @@ -77,41 +77,44 @@ If you experience an issue using an older patch release, please upgrade to the latest patch release of that series and test again before reporting an issue on GitHub. -+-------------+----------------------+--------------------------------------------------------------------------+ -| **Version** | **Release date** | **Support level** | -+-------------+----------------------+--------------------------------------------------------------------------+ -| Godot 4.1 | Q2-Q3 2023 (estimate)| |unstable| *Development.* Receives new features as well as bug fixes | -| (`master`) | | while under development. | -+-------------+----------------------+--------------------------------------------------------------------------+ -| Godot 4.0 | March 2023 | |supported| Receives fixes for bugs, security and platform support | -| | | issues, as well as backwards-compatible usability enhancements. | -+-------------+----------------------+--------------------------------------------------------------------------+ -| Godot 3.6 | Q2-Q3 2023 (estimate)| |supported| *Beta.* Receives new features as well as bug fixes while | -| (`3.x`, LTS)| | under development. Will be released *after* 4.0. | -+-------------+----------------------+--------------------------------------------------------------------------+ -| Godot 3.5 | August 2022 | |supported| Receives fixes for bugs, security and platform support | -| | | issues, as well as backwards-compatible usability enhancements. | -+-------------+----------------------+--------------------------------------------------------------------------+ -| Godot 3.4 | November 2021 | |eol| No longer supported, as fully superseded by the compatible 3.5 | -| | | release (last update: 3.4.5). | -+-------------+----------------------+--------------------------------------------------------------------------+ -| Godot 3.3 | April 2021 | |eol| No longer supported, as fully superseded by the compatible 3.4 | -| | | release (last update: 3.3.4). | -+-------------+----------------------+--------------------------------------------------------------------------+ -| Godot 3.2 | January 2020 | |eol| No longer supported (last update: 3.2.3). | -+-------------+----------------------+--------------------------------------------------------------------------+ -| Godot 3.1 | March 2019 | |eol| No longer supported (last update: 3.1.2). | -+-------------+----------------------+--------------------------------------------------------------------------+ -| Godot 3.0 | January 2018 | |eol| No longer supported (last update: 3.0.6). | -+-------------+----------------------+--------------------------------------------------------------------------+ -| Godot 2.1 | July 2016 | |eol| No longer supported (last update: 2.1.6). | -+-------------+----------------------+--------------------------------------------------------------------------+ -| Godot 2.0 | February 2016 | |eol| No longer supported (last update: 2.0.4.1). | -+-------------+----------------------+--------------------------------------------------------------------------+ -| Godot 1.1 | May 2015 | |eol| No longer supported. | -+-------------+----------------------+--------------------------------------------------------------------------+ -| Godot 1.0 | December 2014 | |eol| No longer supported. | -+-------------+----------------------+--------------------------------------------------------------------------+ ++--------------+----------------------+--------------------------------------------------------------------------+ +| **Version** | **Release date** | **Support level** | ++--------------+----------------------+--------------------------------------------------------------------------+ +| Godot 4.2 | November 2023 | |unstable| *Development.* Receives new features, usability and | +| (`master`) | (estimate) | performance improvements, as well as bug fixes, while under development. | ++--------------+----------------------+--------------------------------------------------------------------------+ +| Godot 4.1 | July 2023 | |supported| Receives fixes for bugs and security issues, as well as | +| | | patches that enable platform support. | ++--------------+----------------------+--------------------------------------------------------------------------+ +| Godot 4.0 | March 2023 | |supported| Receives fixes for bugs and security issues, as well as | +| | | patches that enable platform support. | ++--------------+----------------------+--------------------------------------------------------------------------+ +| Godot 3.6 | Q3 2023 (estimate) | |supported| *Beta.* Receives new features, usability and performance | +| (`3.x`, LTS) | | improvements, as well as bug fixes, while under development. | ++--------------+----------------------+--------------------------------------------------------------------------+ +| Godot 3.5 | August 2022 | |supported| Receives fixes for bugs and security issues, as well as | +| | | patches that enable platform support. | ++--------------+----------------------+--------------------------------------------------------------------------+ +| Godot 3.4 | November 2021 | |eol| No longer supported, as fully superseded by the compatible 3.5 | +| | | release (last update: 3.4.5). | ++--------------+----------------------+--------------------------------------------------------------------------+ +| Godot 3.3 | April 2021 | |eol| No longer supported, as fully superseded by the compatible 3.4 | +| | | release (last update: 3.3.4). | ++--------------+----------------------+--------------------------------------------------------------------------+ +| Godot 3.2 | January 2020 | |eol| No longer supported (last update: 3.2.3). | ++--------------+----------------------+--------------------------------------------------------------------------+ +| Godot 3.1 | March 2019 | |eol| No longer supported (last update: 3.1.2). | ++--------------+----------------------+--------------------------------------------------------------------------+ +| Godot 3.0 | January 2018 | |eol| No longer supported (last update: 3.0.6). | ++--------------+----------------------+--------------------------------------------------------------------------+ +| Godot 2.1 | July 2016 | |eol| No longer supported (last update: 2.1.6). | ++--------------+----------------------+--------------------------------------------------------------------------+ +| Godot 2.0 | February 2016 | |eol| No longer supported (last update: 2.0.4.1). | ++--------------+----------------------+--------------------------------------------------------------------------+ +| Godot 1.1 | May 2015 | |eol| No longer supported. | ++--------------+----------------------+--------------------------------------------------------------------------+ +| Godot 1.0 | December 2014 | |eol| No longer supported. | ++--------------+----------------------+--------------------------------------------------------------------------+ .. |supported| image:: img/supported.png .. |partial| image:: img/partial.png From ccae259c152e91c9e2022bf8121a9f545e053696 Mon Sep 17 00:00:00 2001 From: Yuri Sizov Date: Thu, 29 Jun 2023 16:49:04 +0200 Subject: [PATCH 034/133] Update Godot version to match what the master branch actually tracks --- conf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf.py b/conf.py index 24cff328ccb1..6a20a44472d2 100644 --- a/conf.py +++ b/conf.py @@ -182,7 +182,7 @@ # Set this to `True` when in the `latest` branch to clearly indicate to the reader # that they are not reading the `stable` documentation. "godot_is_latest": True, - "godot_version": "4.0", + "godot_version": "4.1", # Enables a banner that displays the up-to-date status of each article. "godot_show_article_status": True, } From 338c1f635176a05a03f34d1ac97367675ac9fc58 Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Fri, 30 Jun 2023 12:53:51 +0200 Subject: [PATCH 035/133] Update SCons link-time optimization option for 3.5 and later --- .../development/compiling/compiling_for_linuxbsd.rst | 2 +- .../development/compiling/compiling_for_windows.rst | 2 +- .../development/compiling/optimizing_for_size.rst | 2 +- .../development/debugging/using_cpp_profilers.rst | 10 ++-------- 4 files changed, 5 insertions(+), 11 deletions(-) diff --git a/contributing/development/compiling/compiling_for_linuxbsd.rst b/contributing/development/compiling/compiling_for_linuxbsd.rst index e7633dad8b43..59a39220b951 100644 --- a/contributing/development/compiling/compiling_for_linuxbsd.rst +++ b/contributing/development/compiling/compiling_for_linuxbsd.rst @@ -270,7 +270,7 @@ Manager. SCons options ``target=template_release production=yes``. If you are compiling Godot with GCC, you can make the binary - even smaller and faster by adding the SCons option ``use_lto=yes``. + even smaller and faster by adding the SCons option ``lto=full``. As link-time optimization is a memory-intensive process, this will require about 7 GB of available RAM while compiling. diff --git a/contributing/development/compiling/compiling_for_windows.rst b/contributing/development/compiling/compiling_for_windows.rst index 7c3ee4310a13..1753685857d5 100644 --- a/contributing/development/compiling/compiling_for_windows.rst +++ b/contributing/development/compiling/compiling_for_windows.rst @@ -153,7 +153,7 @@ dependencies. Running it will bring up the Project Manager. SCons option ``target=template_release``. If you are compiling Godot with MinGW, you can make the binary - even smaller and faster by adding the SCons option ``use_lto=yes``. + even smaller and faster by adding the SCons option ``lto=full``. As link-time optimization is a memory-intensive process, this will require about 7 GB of available RAM while compiling. diff --git a/contributing/development/compiling/optimizing_for_size.rst b/contributing/development/compiling/optimizing_for_size.rst index 23757113dd03..a83d66fde605 100644 --- a/contributing/development/compiling/optimizing_for_size.rst +++ b/contributing/development/compiling/optimizing_for_size.rst @@ -79,7 +79,7 @@ and MSVC compilers: :: - scons p=windows target=template_release use_lto=yes + scons p=windows target=template_release lto=full Linking becomes much slower and more RAM-consuming with this option, so it should be used only for release builds: diff --git a/contributing/development/debugging/using_cpp_profilers.rst b/contributing/development/debugging/using_cpp_profilers.rst index 4888f7b28570..72e2cf781066 100644 --- a/contributing/development/debugging/using_cpp_profilers.rst +++ b/contributing/development/debugging/using_cpp_profilers.rst @@ -29,14 +29,8 @@ To get useful profiling information, it is **absolutely required** to use a Godo build that includes debugging symbols. Official binaries do not include debugging symbols, since these would make the download size significantly larger. -To get profiling data that best matches the production environment, you should -compile binaries with the following SCons options: - -- For editor binaries: ``target=editor use_lto=yes`` -- For debug export templates: ``target=template_debug use_lto=yes`` -- For release export templates: ``target=template_release debug_symbols=yes`` - - - ``debug_symbols=yes`` is required as export templates are stripped from debugging symbols by default. +To get profiling data that best matches the production environment (but with debugging symbols), +you should compile binaries with the ``production=yes debug_symbols=yes`` SCons options. It is possible to run a profiler on less optimized builds (e.g. ``target=template_debug`` without LTO), but results will naturally be less representative of real world conditions. From 732cb273723b06673220677225e8c73594c5484e Mon Sep 17 00:00:00 2001 From: br1trs <88297220+br1trs@users.noreply.github.com> Date: Fri, 30 Jun 2023 17:59:03 -0600 Subject: [PATCH 036/133] Update c_sharp_basics.rst --- tutorials/scripting/c_sharp/c_sharp_basics.rst | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tutorials/scripting/c_sharp/c_sharp_basics.rst b/tutorials/scripting/c_sharp/c_sharp_basics.rst index aa897b3db0c5..96f370cddcce 100644 --- a/tutorials/scripting/c_sharp/c_sharp_basics.rst +++ b/tutorials/scripting/c_sharp/c_sharp_basics.rst @@ -136,10 +136,9 @@ Visual Studio will include the required SDKs if you have the correct workloads selected, so you don't need to manually install the things listed in the "Prerequisites" section. -While installing Visual Studio, select these workloads: +While installing Visual Studio, select this workload: -- Mobile development with .NET -- .NET Core cross-platform development +- .NET desktop development In Godot's **Editor → Editor Settings** menu: From d7efa8850089cbaeda72f5d84de278d22479ae73 Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Sat, 1 Jul 2023 20:17:35 +0200 Subject: [PATCH 037/133] Link to ThorVG's SVG support page in Importing images The page lists which features of the SVG specification are supported. --- tutorials/assets_pipeline/importing_images.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tutorials/assets_pipeline/importing_images.rst b/tutorials/assets_pipeline/importing_images.rst index 33b629a938a4..02a0578aa225 100644 --- a/tutorials/assets_pipeline/importing_images.rst +++ b/tutorials/assets_pipeline/importing_images.rst @@ -24,7 +24,8 @@ Godot can import the following image formats: - Truevision Targa (``.tga``) - SVG (``.svg``, ``.svgz``) - SVGs are rasterized using `ThorVG `__ - when importing them. Support is limited; complex vectors may not render correctly. + when importing them. `Support is limited `__; + complex vectors may not render correctly. You can check whether ThorVG can render a certain vector correctly using its `web-based viewer `__. For complex vectors, rendering them to PNGs using `Inkscape `__ From 055ec902ce104235fc32467b72b0c786bde62618 Mon Sep 17 00:00:00 2001 From: Danil Alexeev Date: Sat, 1 Jul 2023 18:45:07 +0300 Subject: [PATCH 038/133] GDScript: Add warning about overriding non-virtual native methods --- tutorials/scripting/gdscript/gdscript_basics.rst | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tutorials/scripting/gdscript/gdscript_basics.rst b/tutorials/scripting/gdscript/gdscript_basics.rst index 35f80d046de3..e5b5e2874b75 100644 --- a/tutorials/scripting/gdscript/gdscript_basics.rst +++ b/tutorials/scripting/gdscript/gdscript_basics.rst @@ -1535,6 +1535,22 @@ the function name with the attribute operator:: func dont_override(): return super.overriding() # This calls the method as defined in the base class. +.. warning:: + + One of the common misconceptions is trying to override *non-virtual* engine methods + such as ``get_class()``, ``queue_free()``, etc. This is not supported for technical reasons. + + In Godot 3, you can *shadow* engine methods in GDScript, and it will work if you call this method in GDScript. + However, the engine will **not** execute your code if the method is called inside the engine on some event. + + In Godot 4, even shadowing may not always work, as GDScript optimizes native method calls. + Therefore, we added the ``NATIVE_METHOD_OVERRIDE`` warning, which is treated as an error by default. + We strongly advise against disabling or ignoring the warning. + + Note that this does not apply to virtual methods such as ``_ready()``, ``_process()`` and others + (marked with the ``virtual`` qualifier in the documentation and the names start with an underscore). + These methods are specifically for customizing engine behavior and can be overridden in GDScript. + Signals and notifications can also be useful for these purposes. Class constructor ^^^^^^^^^^^^^^^^^ From b3607959bedc895dcb48d174d373cb3aa5b26ec6 Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Sat, 1 Jul 2023 20:20:16 +0200 Subject: [PATCH 039/133] Link to Using C++ profilers page in CPU optimization This page was created after CPU optimization, so it wasn't linked beforehand. --- tutorials/performance/cpu_optimization.rst | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) diff --git a/tutorials/performance/cpu_optimization.rst b/tutorials/performance/cpu_optimization.rst index 023093b7dfad..c398ccc7fa62 100644 --- a/tutorials/performance/cpu_optimization.rst +++ b/tutorials/performance/cpu_optimization.rst @@ -56,19 +56,8 @@ External profilers Although the Godot IDE profiler is very convenient and useful, sometimes you need more power, and the ability to profile the Godot engine source code itself. -You can use a number of third party profilers to do this including -`Valgrind `__, -`VerySleepy `__, -`HotSpot `__, -`Visual Studio `__ and -`Intel VTune `__. - -.. note:: You will need to compile Godot from source to use a third-party profiler. - This is required to obtain debugging symbols. You can also use a debug - build, however, note that the results of profiling a debug build will - be different to a release build, because debug builds are less - optimized. Bottlenecks are often in a different place in debug builds, - so you should profile release builds whenever possible. +You can :ref:`use a number of third-party C++ profilers ` +to do this. .. figure:: img/valgrind.png :alt: Screenshot of Callgrind @@ -81,7 +70,7 @@ itself, excluding child functions (Self), the number of times the function is called, the function name, and the file or module. In this example, we can see nearly all time is spent under the -`Main::iteration()` function. This is the master function in the Godot source +``Main::iteration()`` function. This is the master function in the Godot source code that is called repeatedly. It causes frames to be drawn, physics ticks to be simulated, and nodes and scripts to be updated. A large proportion of the time is spent in the functions to render a canvas (66%), because this example @@ -225,8 +214,8 @@ SceneTree ========= Although Nodes are an incredibly powerful and versatile concept, be aware that -every node has a cost. Built-in functions such as `_process()` and -`_physics_process()` propagate through the tree. This housekeeping can reduce +every node has a cost. Built-in functions such as ``_process()`` and +``_physics_process()`` propagate through the tree. This housekeeping can reduce performance when you have a very large numbers of nodes (how many exactly depends on the target platform and can range from thousands to tens of thousands so ensure that you profile performance on all target platforms From 7499e7b7747ce9ff17ecaa31a463c2d5ac9e8302 Mon Sep 17 00:00:00 2001 From: Junhao Wang Date: Sat, 1 Jul 2023 11:34:05 -0700 Subject: [PATCH 040/133] Fix initialization typos in GDExtension manual --- tutorials/scripting/gdextension/gdextension_cpp_example.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tutorials/scripting/gdextension/gdextension_cpp_example.rst b/tutorials/scripting/gdextension/gdextension_cpp_example.rst index d5446bd1a135..3615282eadae 100644 --- a/tutorials/scripting/gdextension/gdextension_cpp_example.rst +++ b/tutorials/scripting/gdextension/gdextension_cpp_example.rst @@ -286,9 +286,9 @@ initialize them, but you might have to set up more things depending on your needs. We call the function ``register_class`` for each of our classes in our library. The important function is the third function called ``example_library_init``. -We first call a function in our bindings library that creates an initilization object. +We first call a function in our bindings library that creates an initialization object. This object registrates the initialization and termination functions of the GDExtension. -Furthermore, it sets the level of initilization (core, servers, scene, editor, level). +Furthermore, it sets the level of initialization (core, servers, scene, editor, level). At last, we need the header file for the ``register_types.cpp`` named ``register_types.h``. From 4a175a4a73e3f73b71682d3224d08d81dc6894d7 Mon Sep 17 00:00:00 2001 From: Junhao Wang Date: Sat, 1 Jul 2023 13:11:25 -0700 Subject: [PATCH 041/133] Fix dev=yes in unit testing guide --- contributing/development/core_and_modules/unit_testing.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contributing/development/core_and_modules/unit_testing.rst b/contributing/development/core_and_modules/unit_testing.rst index d5a829bc73d2..ffa912df1706 100644 --- a/contributing/development/core_and_modules/unit_testing.rst +++ b/contributing/development/core_and_modules/unit_testing.rst @@ -48,8 +48,8 @@ arguments for doctest. .. note:: - Tests are compiled automatically if you use the ``dev=yes`` SCons option. - ``dev=yes`` is recommended if you plan on contributing to the engine + Tests are compiled automatically if you use the ``dev_mode=yes`` SCons option. + ``dev_mode=yes`` is recommended if you plan on contributing to the engine development as it will automatically treat compilation warnings as errors. The continuous integration system will fail if any compilation warnings are detected, so you should strive to fix all warnings before opening a pull From 6a2cb1b6884bb719bd236071985201db42607530 Mon Sep 17 00:00:00 2001 From: Emmanouil Papadeas <35376950+OverloadedOrama@users.noreply.github.com> Date: Sun, 2 Jul 2023 17:21:51 +0300 Subject: [PATCH 042/133] Update multi-threaded rendering setting path Changes from "Rendering > Threads > Thread Model", which used to be the old path for Godot 3.x, to "Rendering > Driver > Thread Model", which is the current one for Godot 4.x. --- tutorials/performance/thread_safe_apis.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/performance/thread_safe_apis.rst b/tutorials/performance/thread_safe_apis.rst index d1861d7e0203..0ee4c5721d49 100644 --- a/tutorials/performance/thread_safe_apis.rst +++ b/tutorials/performance/thread_safe_apis.rst @@ -55,7 +55,7 @@ Rendering --------- Instancing nodes that render anything in 2D or 3D (such as Sprite) is *not* thread-safe by default. -To make rendering thread-safe, set the **Rendering > Threads > Thread Model** project setting to **Multi-Threaded**. +To make rendering thread-safe, set the **Rendering > Driver > Thread Model** project setting to **Multi-Threaded**. Note that the Multi-Threaded thread model has several known bugs, so it may not be usable in all scenarios. From 6419421dbffc5a88a3ed5871b2cf4c88c3db8999 Mon Sep 17 00:00:00 2001 From: ViktorVoloshko Date: Mon, 3 Jul 2023 03:26:42 +0300 Subject: [PATCH 043/133] Fixed typo in scripting_first_script.rst --- getting_started/step_by_step/scripting_first_script.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/getting_started/step_by_step/scripting_first_script.rst b/getting_started/step_by_step/scripting_first_script.rst index 701bb7b193fe..14ac3ce538aa 100644 --- a/getting_started/step_by_step/scripting_first_script.rst +++ b/getting_started/step_by_step/scripting_first_script.rst @@ -260,7 +260,7 @@ Moving forward ~~~~~~~~~~~~~~ Let's now make the node move. Add the following two lines inside of the ``_process()`` -function, ensuring the new lines are indented the same way as the ``rotation += angular * delta`` line before +function, ensuring the new lines are indented the same way as the ``rotation += angular_speed * delta`` line before them. .. tabs:: From 1be213cbe8d46642efb9067d9c9a126e0d47b2cb Mon Sep 17 00:00:00 2001 From: Danil Alexeev Date: Mon, 3 Jul 2023 14:34:09 +0300 Subject: [PATCH 044/133] GDScript: Update array documentation * Add info about typed arrays. * Fix the error that packed arrays are passed by value. --- .../scripting/gdscript/gdscript_basics.rst | 65 +++++++++++++++---- 1 file changed, 54 insertions(+), 11 deletions(-) diff --git a/tutorials/scripting/gdscript/gdscript_basics.rst b/tutorials/scripting/gdscript/gdscript_basics.rst index 35f80d046de3..1b80a707b904 100644 --- a/tutorials/scripting/gdscript/gdscript_basics.rst +++ b/tutorials/scripting/gdscript/gdscript_basics.rst @@ -496,9 +496,10 @@ Built-in types Built-in types are stack-allocated. They are passed as values. This means a copy is created on each assignment or when passing them as arguments to functions. -The only exceptions are ``Array``\ s and ``Dictionaries``, which are passed by -reference so they are shared. (Packed arrays such as ``PackedByteArray`` are still -passed as values.) +The exceptions are ``Object``, ``Array``, ``Dictionary``, and packed arrays +(such as ``PackedByteArray``), which are passed by reference so they are shared. +All arrays, ``Dictionary``, and some objects (``Node``, ``Resource``) +have a ``duplicate()`` method that allows you to make a copy. Basic built-in types ~~~~~~~~~~~~~~~~~~~~ @@ -520,21 +521,21 @@ Short for "boolean", it can only contain ``true`` or ``false``. ^^^^^^^^^^^^^^^^^^^^^^ Short for "integer", it stores whole numbers (positive and negative). -It is stored as a 64-bit value, equivalent to "int64_t" in C++. +It is stored as a 64-bit value, equivalent to ``int64_t`` in C++. :ref:`float ` ^^^^^^^^^^^^^^^^^^^^^^^^^^ Stores real numbers, including decimals, using floating-point values. -It is stored as a 64-bit value, equivalent to "double" in C++. -Note: Currently, data structures such as Vector2, Vector3, and -PackedFloat32Array store 32-bit single-precision "float" values. +It is stored as a 64-bit value, equivalent to ``double`` in C++. +Note: Currently, data structures such as ``Vector2``, ``Vector3``, and +``PackedFloat32Array`` store 32-bit single-precision ``float`` values. :ref:`String ` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ A sequence of characters in `Unicode format `_. -Strings can contain the following escape sequences: +String literals can contain the following escape sequences: +---------------------+---------------------------------+ | **Escape sequence** | **Expands to** | @@ -701,6 +702,48 @@ Negative indices count from the end. arr[0] = "Hi!" # Replacing value 1 with "Hi!". arr.append(4) # Array is now ["Hi!", 2, 3, 4]. +Typed arrays +^^^^^^^^^^^^ + +Godot 4.0 added support for typed arrays. On write operations, Godot checks that +element values match the specified type, so the array cannot contain invalid values. +The GDScript static analyzer takes typed arrays into account, however array methods like +``front()`` and ``back()`` still have the ``Variant`` return type. + +Typed arrays have the syntax ``Array[Type]``, where ``Type`` can be any ``Variant`` type, +native or user class, or enum. Nested array types (like ``Array[Array[int]]``) are not supported. + +:: + + var a: Array[int] + var b: Array[Node] + var c: Array[MyClass] + var d: Array[MyEnum] + var e: Array[Variant] + +``Array`` and ``Array[Variant]`` are the same thing. + +.. note:: + + Arrays are passed by reference, so the array element type is also an attribute of the in-memory + structure referenced by a variable in runtime. The static type of a variable restricts the structures + that it can reference to. Therefore, you **cannot** assign an array with a different element type, + even if the type is a subtype of the required type:: + + var a: Array[Node2D] = [Node2D.new()] + + # OK. You can add the value to the array because `Node2D` extends `Node`. + var b: Array[Node] = [a[0]] + + # Error. You cannot assign an `Array[Node2D]` to an `Array[Node]` variable. + b = a + + The only exception was made for the ``Array`` (``Array[Variant]``) type, for user convenience + and compatibility with old code. However, operations on untyped arrays are considered unsafe. + +Packed arrays +^^^^^^^^^^^^^ + GDScript arrays are allocated linearly in memory for speed. Large arrays (more than tens of thousands of elements) may however cause memory fragmentation. If this is a concern, special types of @@ -714,9 +757,9 @@ arrays. They are therefore only recommended to use for large data sets: - :ref:`PackedFloat32Array `: An array of 32-bit floats. - :ref:`PackedFloat64Array `: An array of 64-bit floats. - :ref:`PackedStringArray `: An array of strings. -- :ref:`PackedVector2Array `: An array of :ref:`Vector2 ` objects. -- :ref:`PackedVector3Array `: An array of :ref:`Vector3 ` objects. -- :ref:`PackedColorArray `: An array of :ref:`Color ` objects. +- :ref:`PackedVector2Array `: An array of :ref:`Vector2 ` values. +- :ref:`PackedVector3Array `: An array of :ref:`Vector3 ` values. +- :ref:`PackedColorArray `: An array of :ref:`Color ` values. :ref:`Dictionary ` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ From 9fb9915ad95e97d480c4a42ba1ad258fc64570d5 Mon Sep 17 00:00:00 2001 From: Danil Alexeev Date: Tue, 23 May 2023 18:12:54 +0300 Subject: [PATCH 045/133] GDScript: Document static variables --- .../scripting/gdscript/gdscript_basics.rst | 139 ++++++++++++++++-- 1 file changed, 127 insertions(+), 12 deletions(-) diff --git a/tutorials/scripting/gdscript/gdscript_basics.rst b/tutorials/scripting/gdscript/gdscript_basics.rst index 35f80d046de3..4391fb489b49 100644 --- a/tutorials/scripting/gdscript/gdscript_basics.rst +++ b/tutorials/scripting/gdscript/gdscript_basics.rst @@ -191,7 +191,7 @@ in case you want to take a look under the hood. +------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ | func | Defines a function. | +------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ -| static | Defines a static function. Static member variables are not allowed. | +| static | Defines a static function or a static member variable. | +------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ | const | Defines a constant. | +------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -412,8 +412,8 @@ Both of these are the same:: .. _doc_gdscript_onready_annotation: -`@onready` annotation -~~~~~~~~~~~~~~~~~~~~~ +``@onready`` annotation +~~~~~~~~~~~~~~~~~~~~~~~ When using nodes, it's common to desire to keep references to parts of the scene in a variable. As scenes are only warranted to be @@ -847,6 +847,110 @@ Valid types are: You can turn off this check, or make it only a warning, by changing it in the project settings. See :ref:`doc_gdscript_warning_system` for details. +Static variables +^^^^^^^^^^^^^^^^ + +A class member variable can be declared static:: + + static var a + +Static variables belong to the class, not instances. This means that static variables +share values between multiple instances, unlike regular member variables. + +From inside a class, you can access static variables from any function, both static and non-static. +From outside the class, you can access static variables using the class or an instance +(the second is not recommended as it is less readable). + +.. note:: + + The ``@export`` and ``@onready`` annotations cannot be applied to a static variable. + Local variables cannot be static. + +The following example defines a ``Person`` class with a static variable named ``max_id``. +We increment the ``max_id`` in the ``_init()`` function. This makes it easy to keep track +of the number of ``Person`` instances in our game. + +:: + + # person.gd + class_name Person + + static var max_id = 0 + + var id + var name + + func _init(p_name): + max_id += 1 + id = max_id + name = p_name + +In this code, we create two instances of our ``Person`` class and check that the class +and every instance have the same ``max_id`` value, because the variable is static and accessible to every instance. + +:: + + # test.gd + extends Node + + func _ready(): + var person1 = Person.new("John Doe") + var person2 = Person.new("Jane Doe") + + print(person1.id) # 1 + print(person2.id) # 2 + + print(Person.max_id) # 2 + print(person1.max_id) # 2 + print(person2.max_id) # 2 + +Static variables can have type hints, setters and getters:: + + static var balance: int = 0 + + static var debt: int: + get: + return -balance + set(value): + balance = -value + +A base class static variable can also be accessed via a child class:: + + class A: + static var x = 1 + + class B extends A: + pass + + func _ready(): + prints(A.x, B.x) # 1 1 + A.x = 2 + prints(A.x, B.x) # 2 2 + B.x = 3 + prints(A.x, B.x) # 3 3 + +``@static_unload`` annotation +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Since GDScript classes are resources, having static variables in a script prevents it from being unloaded +even if there are no more instances of that class and no other references left. This can be important +if static variables store large amounts of data or hold references to other project resources, such as scenes. +You should clean up this data manually, or use the :ref:`@static_unload ` +annotation if static variables don't store important data and can be reset. + +.. warning:: + + Currently, due to a bug, scripts are never freed, even if ``@static_unload`` annotation is used. + +Note that ``@static_unload`` applies to the entire script (including inner classes) +and must be placed at the top of the script, before ``class_name`` and ``extends``:: + + @static_unload + class_name MyNode + extends Node + +See also `Static functions`_ and `Static constructor`_. + Casting ^^^^^^^ @@ -1080,15 +1184,15 @@ Lambda functions capture the local environment. Local variables are passed by va Static functions ^^^^^^^^^^^^^^^^ -A function can be declared static. When a function is static, it has no -access to the instance member variables or ``self``. This is mainly -useful to make libraries of helper functions:: +A function can be declared static. When a function is static, it has no access to the instance member variables or ``self``. +A static function has access to static variables. Also static functions are useful to make libraries of helper functions:: static func sum2(a, b): return a + b Lambdas cannot be declared static. +See also `Static variables`_ and `Static constructor`_. Statements and control flow ~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -1467,13 +1571,11 @@ If you want to use ``extends`` too, you can keep both on the same line:: class_name MyNode extends Node -.. note:: Godot's class syntax is compact: it can only contain member variables or - functions. You can use static functions, but not static member variables. In the - same way, the engine initializes variables every time you create an instance, - and this includes arrays and dictionaries. This is in the spirit of thread - safety, since scripts can be initialized in separate threads without the user - knowing. +.. note:: + Godot initializes non-static variables every time you create an instance, + and this includes arrays and dictionaries. This is in the spirit of thread safety, + since scripts can be initialized in separate threads without the user knowing. Inheritance ^^^^^^^^^^^ @@ -1589,6 +1691,19 @@ There are a few things to keep in mind here: func _init(): super(5) +Static constructor +^^^^^^^^^^^^^^^^^^ + +A static constructor is a static function ``_static_init`` that is called automatically +when the class is loaded, after the static variables have been initialized:: + + static var my_static_var = 1 + + static func _static_init(): + my_static_var = 2 + +A static constructor cannot take arguments and must not return any value. + Inner classes ^^^^^^^^^^^^^ From 0614837c22aeeb5c142fc4ba10d5c7b2f714bffa Mon Sep 17 00:00:00 2001 From: Paul Joannon Date: Mon, 3 Jul 2023 19:44:40 +0200 Subject: [PATCH 046/133] Remove erroneous C# example about autoloads --- tutorials/scripting/singletons_autoload.rst | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/tutorials/scripting/singletons_autoload.rst b/tutorials/scripting/singletons_autoload.rst index a7b3bae10ff4..6bbf3bb5784b 100644 --- a/tutorials/scripting/singletons_autoload.rst +++ b/tutorials/scripting/singletons_autoload.rst @@ -87,18 +87,13 @@ This means that any node can access a singleton named "PlayerVariables" with: playerVariables.Health -= 10; // Instance field. If the **Enable** column is checked (which is the default), then the singleton can -be accessed directly without requiring ``get_node()``: +be accessed directly in GDScript, without requiring ``get_node()``: .. tabs:: .. code-tab:: gdscript GDScript PlayerVariables.health -= 10 - .. code-tab:: csharp - - // Static members can be accessed by using the class name. - PlayerVariables.Health -= 10; - Note that autoload objects (scripts and/or scenes) are accessed just like any other node in the scene tree. In fact, if you look at the running scene tree, you'll see the autoloaded nodes appear: From dc44d36f66a0044a67e703f700e483f6621e125f Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Wed, 14 Jun 2023 22:32:20 +0200 Subject: [PATCH 047/133] Add a compatibility policy and common questions to Release policy - Add answers to common questions: - Which version should I use for a new project? - Should I upgrade my project to use new engine versions? --- about/faq.rst | 14 +++ about/release_policy.rst | 114 +++++++++++++++++++ tutorials/migrating/upgrading_to_godot_4.rst | 6 +- 3 files changed, 130 insertions(+), 4 deletions(-) diff --git a/about/faq.rst b/about/faq.rst index a37fbc913926..f25463c6f5cf 100644 --- a/about/faq.rst +++ b/about/faq.rst @@ -376,6 +376,20 @@ When is the next release of Godot out? When it's ready! See :ref:`doc_release_policy_when_is_next_release_out` for more information. +Which Godot version should I use for a new project? +--------------------------------------------------- + +We recommend using Godot 4.x for new projects, but depending on the feature set +you need, it may be better to use 3.x instead. See +:ref:`doc_release_policy_which_version_should_i_use` for more information. + +Should I upgrade my project to use new Godot versions? +------------------------------------------------------ + +Some new versions are safer to upgrade to than others. In general, whether you +should upgrade depends on your project's circumstances. See +:ref:`doc_release_policy_should_i_upgrade_my_project` for more information. + I would like to contribute! How can I get started? -------------------------------------------------- diff --git a/about/release_policy.rst b/about/release_policy.rst index 0fb9836be053..5f5ecba96afd 100644 --- a/about/release_policy.rst +++ b/about/release_policy.rst @@ -135,6 +135,60 @@ provided for testing purposes only. See :ref:`doc_upgrading_to_godot_4` for instructions on migrating a project from Godot 3.x to 4.x. +.. _doc_release_policy_which_version_should_i_use: + +Which version should I use for a new project? +--------------------------------------------- + +We recommend using Godot 4.x for new projects, as the Godot 4.x series will be +supported long after 3.x stops receiving updates in the future. One caveat is +that a lot of third-party documentation hasn't been updated for Godot 4.x yet. +If you have to follow a tutorial designed for Godot 3.x, we recommend keeping +:ref:`doc_upgrading_to_godot_4` open in a separate tab to check which methods +have been renamed (if you get a script error while trying to use a specific node +or method that was renamed in Godot 4.x). + +If your project requires a feature that is missing in 4.x (such as GLES2/WebGL +1.0), you should use Godot 3.x for a new project instead. + +.. _doc_release_policy_should_i_upgrade_my_project: + +Should I upgrade my project to use new engine versions? +------------------------------------------------------- + +.. note:: + + Upgrading software while working on a project is inherently risky, so + consider whether it's a good idea for your project before attempting an + upgrade. Also, make backups of your project or use version control to + prevent losing data in case the upgrade goes wrong. + + That said, we do our best to keep minor and especially patch releases + compatible with existing projects. + +The general recommendation is to upgrade your project to follow new *patch* +releases, such as upgrading from 4.0.2 to 4.0.3. This ensures you get bug fixes, +security updates and platform support updates (which is especially important for +mobile platforms). You also get continued support, as only the last patch +release receives support on official community platforms. + +For *minor* releases, you should determine whether it's a good idea to upgrade +on a case-by-case basis. We've made a lot of effort in making the upgrade +process as seamless as possible, but some breaking changes may be present in +minor releases, along with a greater risk of regressions. Some fixes included in +minor releases may also change a class' expected behavior as required to fix +some bugs. This is especially the case in classes marked as *experimental* in +the documentation. + +*Major* releases bring a lot of new functionality, but they also remove +previously existing functionality and may raise hardware requirements. They also +require much more work to upgrade to compared to minor releases. As a result, we +recommend sticking with the major release you've started your project with if +you are happy with how your project currently works. For example, if your +project was started with 3.5, we recommend upgrading to 3.5.2 and possibly 3.6 +in the future, but not to 4.0+, unless your project really needs the new +features that come with 4.0+. + .. _doc_release_policy_when_is_next_release_out: When is the next release out? @@ -161,3 +215,63 @@ The 3.6 release is still planned and should be the last stable branch of Godot as long as users still need it (due to missing features in Godot 4.x, or having published games which they need to keep updating for platform requirements). + +What are the criteria for compatibility across engine versions? +--------------------------------------------------------------- + +.. note:: + + This section is intended to be used by contributors to determine which + changes are safe for a given release. The list is not exhaustive; it only + outlines the most common situations encountered during Godot's development. + +The following changes are acceptable in patch releases: + +- Fixing a bug in a way that has no major negative impact on most projects, such + as a visual or physics bug. Godot's physics engine is not deterministic, so + physics bug fixes are not considered to break compatibility. If fixing a bug + has a negative impact that could impact a lot of projects, it should be made + optional (e.g. using a project setting or separate method). +- Adding a new optional parameter to a method. +- Small-scale editor usability tweaks. + +Note that we tend to be more conservative with the fixes we allow in each +subsequent patch release. For instance, 4.0.1 may receive more impactful fixes +than 4.0.4 would. + +The following changes are acceptable in minor releases, but not patch releases: + +- Significant new features. +- Renaming a method parameter. In C#, method parameters can be passed by name + (but not in GDScript). As a result, this can break some projects that use C#. +- Deprecating a method, member variable, or class. This is done by adding a + deprecated flag to its class reference, which will show up in the editor. When + a method is marked as deprecated, it's slated to be removed in the next + *major* release. +- Changes that affect the default project theme's visuals. +- Bug fixes which significantly change the behavior or the output, with the aim + to meet user expectations better. In comparison, in patch releases, we may + favor keeping a buggy behavior so we don't break existing projects which + likely already rely on the bug or use a workaround. +- Performance optimizations that result in visual changes. + +The following changes are considered **compatibility-breaking** and can only be +performed in a new major release: + +- Renaming or removing a method, member variable, or class. +- Modifying a node's inheritance tree by making it inherit from a different class. +- Changing the default value of a project setting value in a way that affects existing + projects. To only affect new projects, the project manager should write a + modified ``project.godot`` instead. + +Since Godot 5.0 hasn't been branched off yet, we currently discourage making +compatibility-breaking changes of this kind. + +.. note:: + + When modifying a method's signature in any fashion (including adding an + optional parameter), a GDExtension compatibility method must be created. + This ensures that existing GDExtensions continue to work across patch and + minor releases, so that users don't have to recompile them. + See `pull request #76446 ` + for more information. diff --git a/tutorials/migrating/upgrading_to_godot_4.rst b/tutorials/migrating/upgrading_to_godot_4.rst index dd15df4d380c..0632954830eb 100644 --- a/tutorials/migrating/upgrading_to_godot_4.rst +++ b/tutorials/migrating/upgrading_to_godot_4.rst @@ -33,10 +33,8 @@ Godot 3.x for the following reasons: - `Godot 3.x is tried and true, while Godot 4 remains in its early stages. `__ - Godot 4.0 is expected to contain workflow and performance issues that Godot - 3.x doesn't have. If stability is crucial to your project, it's recommended to - wait for the first minor release in the 4.x series to land, along with its - respective patch release. This means staying on Godot 3.x until Godot 4.1.1 is - released. + 3.x doesn't have. These issues will be ironed out over time in future + Godot 4.x releases. - Godot 4 has fewer third-party tutorials available compared to Godot 3.x. If you're new to game engines, you may have a better experience using Godot 3.x From 13ab995921a1e0b61fc2c971f9109d1edd1fd7ba Mon Sep 17 00:00:00 2001 From: Raul Santos Date: Wed, 5 Jul 2023 11:38:54 +0200 Subject: [PATCH 048/133] Update C# differences list for 4.1 --- .../scripting/c_sharp/c_sharp_collections.rst | 3 +- .../scripting/c_sharp/c_sharp_differences.rst | 33 +++++++++++-------- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/tutorials/scripting/c_sharp/c_sharp_collections.rst b/tutorials/scripting/c_sharp/c_sharp_collections.rst index 5bd99fc6c6cd..e5c00ea2d080 100644 --- a/tutorials/scripting/c_sharp/c_sharp_collections.rst +++ b/tutorials/scripting/c_sharp/c_sharp_collections.rst @@ -121,6 +121,7 @@ all `System.Linq.Enumerable.All`_ any `System.Linq.Enumerable.Any`_ append Add append_array AddRange +assign Clear and AddRange back ``Array[^1]`` or `System.Linq.Enumerable.Last`_ or `System.Linq.Enumerable.LastOrDefault`_ bsearch BinarySearch bsearch_custom N/A @@ -140,6 +141,7 @@ hash GD.Hash insert Insert is_empty Use ``Count == 0`` is_read_only IsReadOnly +is_same_typed N/A is_typed N/A make_read_only MakeReadOnly map `System.Linq.Enumerable.Select`_ @@ -161,7 +163,6 @@ size Count slice Slice sort Sort sort_custom `System.Linq.Enumerable.OrderBy`_ -typed_assign N/A operator != !RecursiveEqual operator + operator + operator < N/A diff --git a/tutorials/scripting/c_sharp/c_sharp_differences.rst b/tutorials/scripting/c_sharp/c_sharp_differences.rst index d14059ed327c..69c818b4ca33 100644 --- a/tutorials/scripting/c_sharp/c_sharp_differences.rst +++ b/tutorials/scripting/c_sharp/c_sharp_differences.rst @@ -379,6 +379,7 @@ count StringExtensions.Count (Consider using `RegEx`_) countn StringExtensions.CountN (Consider using `RegEx`_) dedent StringExtensions.Dedent ends_with `string.EndsWith`_ +erase `string.Remove`_ (Consider using `StringBuilder`_ to manipulate strings) find StringExtensions.Find (Consider using `string.IndexOf`_ or `string.IndexOfAny`_) findn StringExtensions.FindN (Consider using `string.IndexOf`_ or `string.IndexOfAny`_) format Use `$ string interpolation`_ @@ -390,6 +391,7 @@ get_slice N/A get_slice_count N/A get_slicec N/A hash StringExtensions.Hash (Consider using `object.GetHashCode`_ unless you need to guarantee the same behavior as in GDScript) +hex_decode StringExtensions.HexDecode (Consider using `System.Convert.FromHexString`_) hex_to_int StringExtensions.HexToInt (Consider using `int.Parse`_ or `long.Parse`_ with `System.Globalization.NumberStyles.HexNumber`_) humanize_size N/A indent StringExtensions.Indent @@ -414,8 +416,8 @@ lpad `string.PadLeft`_ lstrip `string.TrimStart`_ match StringExtensions.Match (Consider using `RegEx`_) matchn StringExtensions.MatchN (Consider using `RegEx`_) -md5_buffer StringExtensions.MD5Buffer (Consider using `System.Security.Cryptography.MD5.HashData`_) -md5_text StringExtensions.MD5Text (Consider using `System.Security.Cryptography.MD5.HashData`_ with StringExtensions.HexEncode) +md5_buffer StringExtensions.Md5Buffer (Consider using `System.Security.Cryptography.MD5.HashData`_) +md5_text StringExtensions.Md5Text (Consider using `System.Security.Cryptography.MD5.HashData`_ with StringExtensions.HexEncode) naturalnocasecmp_to N/A (Consider using `string.Equals`_ or `string.Compare`_) nocasecmp_to StringExtensions.NocasecmpTo or StringExtensions.CompareTo (Consider using `string.Equals`_ or `string.Compare`_) num `float.ToString`_ or `double.ToString`_ @@ -434,10 +436,10 @@ right StringExtensions.Right (Consider using `string.Substrin rpad `string.PadRight`_ rsplit N/A rstrip `string.TrimEnd`_ -sha1_buffer StringExtensions.SHA1Buffer (Consider using `System.Security.Cryptography.SHA1.HashData`_) -sha1_text StringExtensions.SHA1Text (Consider using `System.Security.Cryptography.SHA1.HashData`_ with StringExtensions.HexEncode) -sha256_buffer StringExtensions.SHA256Buffer (Consider using `System.Security.Cryptography.SHA256.HashData`_) -sha256_text StringExtensions.SHA256Text (Consider using `System.Security.Cryptography.SHA256.HashData`_ with StringExtensions.HexEncode) +sha1_buffer StringExtensions.Sha1Buffer (Consider using `System.Security.Cryptography.SHA1.HashData`_) +sha1_text StringExtensions.Sha1Text (Consider using `System.Security.Cryptography.SHA1.HashData`_ with StringExtensions.HexEncode) +sha256_buffer StringExtensions.Sha256Buffer (Consider using `System.Security.Cryptography.SHA256.HashData`_) +sha256_text StringExtensions.Sha256Text (Consider using `System.Security.Cryptography.SHA256.HashData`_ with StringExtensions.HexEncode) similarity StringExtensions.Similarity simplify_path StringExtensions.SimplifyPath split StringExtensions.Split (Consider using `string.Split`_) @@ -445,7 +447,7 @@ split_floats StringExtensions.SplitFloat strip_edges StringExtensions.StripEdges (Consider using `string.Trim`_, `string.TrimStart`_ or `string.TrimEnd`_) strip_escapes StringExtensions.StripEscapes substr StringExtensions.Substr (Consider using `string.Substring`_ or `string.AsSpan`_) -to_ascii_buffer StringExtensions.ToASCIIBuffer (Consider using `System.Text.Encoding.ASCII.GetBytes`_) +to_ascii_buffer StringExtensions.ToAsciiBuffer (Consider using `System.Text.Encoding.ASCII.GetBytes`_) to_camel_case StringExtensions.ToCamelCase to_float StringExtensions.ToFloat (Consider using `float.TryParse`_ or `double.TryParse`_) to_int StringExtensions.ToInt (Consider using `int.TryParse`_ or `long.TryParse`_) @@ -453,9 +455,10 @@ to_lower `string.ToLower`_ to_pascal_case StringExtensions.ToPascalCase to_snake_case StringExtensions.ToSnakeCase to_upper `string.ToUpper`_ -to_utf16_buffer StringExtensions.ToUTF16Buffer (Consider using `System.Text.Encoding.UTF16.GetBytes`_) -to_utf32_buffer StringExtensions.ToUTF32Buffer (Consider using `System.Text.Encoding.UTF32.GetBytes`_) -to_utf8_buffer StringExtensions.ToUTF8Buffer (Consider using `System.Text.Encoding.UTF8.GetBytes`_) +to_utf16_buffer StringExtensions.ToUtf16Buffer (Consider using `System.Text.Encoding.UTF16.GetBytes`_) +to_utf32_buffer StringExtensions.ToUtf32Buffer (Consider using `System.Text.Encoding.UTF32.GetBytes`_) +to_utf8_buffer StringExtensions.ToUtf8Buffer (Consider using `System.Text.Encoding.UTF8.GetBytes`_) +to_wchar_buffer StringExtensions.ToUtf16Buffer in Windows and StringExtensiont.ToUtf32Buffer in other platforms trim_prefix StringExtensions.TrimPrefix trim_suffix StringExtensions.TrimSuffix unicode_at `string[int]`_ indexer @@ -471,10 +474,10 @@ List of Godot's PackedByteArray methods that create a String and their C# equiva ========================= ============================================================== GDScript C# ========================= ============================================================== -get_string_from_ascii StringExtensions.GetStringFromASCII (Consider using `System.Text.Encoding.ASCII.GetString`_) -get_string_from_utf16 StringExtensions.GetStringFromUTF16 (Consider using `System.Text.Encoding.UTF16.GetString`_) -get_string_from_utf32 StringExtensions.GetStringFromUTF32 (Consider using `System.Text.Encoding.UTF32.GetString`_) -get_string_from_utf8 StringExtensions.GetStringFromUTF8 (Consider using `System.Text.Encoding.UTF8.GetString`_) +get_string_from_ascii StringExtensions.GetStringFromAscii (Consider using `System.Text.Encoding.ASCII.GetString`_) +get_string_from_utf16 StringExtensions.GetStringFromUtf16 (Consider using `System.Text.Encoding.UTF16.GetString`_) +get_string_from_utf32 StringExtensions.GetStringFromUtf32 (Consider using `System.Text.Encoding.UTF32.GetString`_) +get_string_from_utf8 StringExtensions.GetStringFromUtf8 (Consider using `System.Text.Encoding.UTF8.GetString`_) hex_encode StringExtensions.HexEncode (Consider using `System.Convert.ToHexString`_) ========================= ============================================================== @@ -516,6 +519,7 @@ hex_encode StringExtensions.HexEncode (Consider using `System.Co .. _string.Length: https://learn.microsoft.com/en-us/dotnet/api/system.string.length .. _string.PadLeft: https://learn.microsoft.com/en-us/dotnet/api/system.string.padleft .. _string.PadRight: https://learn.microsoft.com/en-us/dotnet/api/system.string.padright +.. _string.Remove: https://learn.microsoft.com/en-us/dotnet/api/system.string.remove .. _string.Replace: https://learn.microsoft.com/en-us/dotnet/api/system.string.replace .. _string.Split: https://learn.microsoft.com/en-us/dotnet/api/system.string.split .. _string.StartsWith: https://learn.microsoft.com/en-us/dotnet/api/system.string.startswith @@ -526,6 +530,7 @@ hex_encode StringExtensions.HexEncode (Consider using `System.Co .. _string.ToLower: https://learn.microsoft.com/en-us/dotnet/api/system.string.tolower .. _string.ToUpper: https://learn.microsoft.com/en-us/dotnet/api/system.string.toupper .. _StringBuilder: https://learn.microsoft.com/en-us/dotnet/api/system.text.stringbuilder +.. _System.Convert.FromHexString: https://learn.microsoft.com/en-us/dotnet/api/system.convert.fromhexstring .. _System.Convert.ToHexString: https://learn.microsoft.com/en-us/dotnet/api/system.convert.tohexstring .. _System.Globalization.NumberStyles.HexNumber: https://learn.microsoft.com/en-us/dotnet/api/system.globalization.numberstyles#system-globalization-numberstyles-hexnumber .. _System.IO.Path: https://learn.microsoft.com/en-us/dotnet/api/system.io.path From 968e8a77579a5f813f367e073e76ef025948f6f4 Mon Sep 17 00:00:00 2001 From: David Snopek Date: Mon, 26 Jun 2023 13:34:05 -0500 Subject: [PATCH 049/133] Make the steps for deploying to Meta Quest 2 (and other Android headsets) clearer --- tutorials/export/one-click_deploy.rst | 2 + tutorials/xr/deploying_to_android.rst | 41 +++++++++++++----- tutorials/xr/img/android_meta_quest.webp | Bin 18496 -> 24524 bytes .../xr/img/android_one_click_deploy.webp | Bin 0 -> 14132 bytes 4 files changed, 33 insertions(+), 10 deletions(-) create mode 100644 tutorials/xr/img/android_one_click_deploy.webp diff --git a/tutorials/export/one-click_deploy.rst b/tutorials/export/one-click_deploy.rst index ca9385e8ffb6..f2c817c49a57 100644 --- a/tutorials/export/one-click_deploy.rst +++ b/tutorials/export/one-click_deploy.rst @@ -59,6 +59,8 @@ Using one-click deploy .. image:: img/remote_debug.webp +.. _doc_one-click_deploy_troubleshooting: + Troubleshooting --------------- diff --git a/tutorials/xr/deploying_to_android.rst b/tutorials/xr/deploying_to_android.rst index 2a39bd210bec..15046bab5757 100644 --- a/tutorials/xr/deploying_to_android.rst +++ b/tutorials/xr/deploying_to_android.rst @@ -5,16 +5,25 @@ Deploying to Android Setup ------------ -Most mobile headsets run on Android and OpenXR support is making its way to these platforms. There are specific requirements for deploying XR projects to Android. -For general requirements around exporting to Android, please first read :ref:`doc_exporting_for_android`. +Most mobile headsets run on Android and OpenXR support is making its way to these platforms. + +Before following the OpenXR-specific instructions here, you'll need to first setup your system to export to Android in general, including: + +- Installing OpenJDK 11 +- Installing Android Studio +- Creating a debug.keystore +- Configuring the location of the Android SDK and debug.keystore in Godot + +See :ref:`doc_exporting_for_android` for the full details, and return here when you've finished these steps. + +Custom Android build +-------------------- .. note:: Official support for the Android platform wasn't added to the OpenXR specification initially resulting in various vendors creating custom loaders to make OpenXR available on their headsets. While the long term expectation is that all vendors will adopt the official OpenXR loader, for now these loaders need to be added to your project. -Custom Android build --------------------- -In order to deploy the loaders into your project you will need to setup a custom Android build. +In order to include the vendor-specific OpenXR loader into your project, you will need to setup a custom Android build. Select **Install Android Build Template...** from the **Project** menu: @@ -35,14 +44,15 @@ There is a subfolder called **plugins** containing the new files. You can find the main repository of the loader plugin `here `__. -Creating the export templates ------------------------------ -You will need to setup a separate export template for each device as each device will need its own loader included. +Creating the export presets +--------------------------- +You will need to setup a separate export preset for each device, as each device will need its own loader included. Open **Project** and select **Export..**. Click on **Add..** and select **Android**. -Next change the name of the export profile for the device you're setting this up for, say **Meta Quest**. +Next change the name of the export preset for the device you're setting this up for, say **Meta Quest**. And enable **Use Gradle Build**. +If you want to use one-click deploy (described below), ensure that **Runnable** is enabled. If the loader plugins were installed correctly you should find entries for the different headsets, select the entry for meta: @@ -56,7 +66,7 @@ The hand tracking and passthrough settings here currently only work for the Meta .. image:: img/xr_export_features.webp -Now you can repeat the same process for the other devices. Note that if you wish to test your game with Godots one-click deploy, you have to mark the export profile for your device as **Runnable** so Godot knows which loader to deploy. +Now you can repeat the same process for the other devices. .. note:: There are separate loaders for the Meta Quest, Pico and Lynx R1 headsets. @@ -70,3 +80,14 @@ Now you can repeat the same process for the other devices. Note that if you wish Note that we are awaiting driver updates on various devices before Vulkan support will work on these. +Running on your device from the Godot editor +-------------------------------------------- +If you've setup your export settings as described above, and your headset is connected to your computer and correctly recognized, you can launch it directly from the Godot editor using :ref:`doc_one-click_deploy`: + +.. image:: img/android_one_click_deploy.webp + +For some devices on some platforms, you may need to perform some extra steps in order for your device to be recognized correctly, so be sure to check the developer documentation from your headset vendor. + +For example, with the Meta Quest 2, you need to enable developer mode on the headset, and if you're on Windows, you'll need to install special ADB drivers. See the `official Meta Quest developer documentation `_ for more details. + +If you're having any issues with one-click deploy, check the :ref:`Troubleshooting section `. diff --git a/tutorials/xr/img/android_meta_quest.webp b/tutorials/xr/img/android_meta_quest.webp index eba440bf6da182f1ebfba0e7083fc2590e442502..2924fbdc172a545f6adca24e34088e1ed41c5fbe 100644 GIT binary patch literal 24524 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 m6Zj|aPvD=xKY@P&{{;RC{1f;m@K50XDGH#kR literal 0 HcmV?d00001 From ea857e7d70b3638976a6346528360425417821f7 Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Wed, 24 May 2023 13:10:15 +0200 Subject: [PATCH 050/133] Update TSCN file format documentation to Godot 4.0 - Document default values not being stored. - Mention that whitespace is not significant. --- .../development/file_formats/tscn.rst | 557 ++++++++++-------- 1 file changed, 313 insertions(+), 244 deletions(-) diff --git a/contributing/development/file_formats/tscn.rst b/contributing/development/file_formats/tscn.rst index 078f67276764..1b53c55cacfd 100644 --- a/contributing/development/file_formats/tscn.rst +++ b/contributing/development/file_formats/tscn.rst @@ -1,5 +1,3 @@ -:article_outdated: True - .. _doc_tscn_file_format: TSCN file format @@ -17,41 +15,70 @@ SCN files stored inside the ``.godot/imported/`` folder. This reduces the data size and speeds up loading, as binary formats are faster to load compared to text-based formats. +To make files more compact, properties equal to the default value are not stored +in scene/resource files. It is possible to write them manually, but they will be +discarded when saving the file. + For those looking for a complete description, the parsing is handled in the file `resource_format_text.cpp `_ in the ``ResourceFormatLoaderText`` class. +.. note:: + + The scene and resource file formats have changed significantly in Godot 4, + with the introduction of string-based UIDs to replace incremental integer + IDs. + + Mesh, skeleton and animation data is also stored differently compared to Godot 3. + You can read about some of the changes in this article: + `Animation data rework for 4.0 `__ + + Scenes and resources saved with Godot 4.x contain ``format=3`` in their + header, whereas Godot 3.x uses ``format=2`` instead. + File structure -------------- There are five main sections inside the TSCN file: -0. File Descriptor +0. File descriptor 1. External resources 2. Internal resources 3. Nodes 4. Connections -The file descriptor looks like ``[gd_scene load_steps=3 format=2]`` and should -be the first entry in the file. The ``load_steps`` parameter is equal to the +The file descriptor looks like ``[gd_scene load_steps=4 format=3 uid="uid://cecaux1sm7mo0"]`` +and should be the first entry in the file. The ``load_steps`` parameter is equal to the total amount of resources (internal and external) plus one (for the file itself). If the file has no resources, ``load_steps`` is omitted. The engine will still load the file correctly if ``load_steps`` is incorrect, but this will affect loading bars and any other piece of code relying on that value. +``uid`` is an unique string-based identifier representing the scene. This is +used by the engine to track files that are moved around, even while the editor +is closed. Scripts can also load UID-based resources using the ``uid://`` path +prefix to avoid relying on filesystem paths. This makes it possible to move +around a file in the project, but still be able to load it in scripts without +having to modify the script. Godot does not use external files to keep track of +IDs, which means no central metadata storage location is required within the +project. See `this pull request `__ +for detailed information. + These sections should appear in order, but it can be hard to distinguish them. The only difference between them is the first element in the heading for all of the items in the section. For example, the heading of all external resources -should start with ``[ext_resource .....]``. +should start with ``[ext_resource ...]``. A TSCN file may contain single-line comments starting with a semicolon (``;``). However, comments will be discarded when saving the file using the Godot editor. +Whitespace within a TSCN file is not significant (except within strings), but +extraneous whitespace will be discarded when saving the file. Entries inside the file ~~~~~~~~~~~~~~~~~~~~~~~ A heading looks like -``[ key=value key=value key=value ...]`` +``[ key1=value1 key2=value2 key3=value3 ...]`` where resource_type is one of: - ``ext_resource`` @@ -65,27 +92,26 @@ so on. For example, a Node3D looks like: :: - [node name="Cube" type="Node3D" parent="."] - transform=Transform( 1.0, 0.0, 0.0 ,0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0 ) - + [node name="Cube" type="Node3D"] + transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 2, 3) The scene tree -------------- The scene tree is made up of… nodes! The heading of each node consists of -its name, parent and (most of the time) a type. For example -``[node type="Camera" name="PlayerCamera" parent="Player/Head"]`` +its name, parent and (most of the time) a type. For example: +``[node name="PlayerCamera" type="Camera" parent="Player/Head"]`` Other valid keywords include: - ``instance`` - ``instance_placeholder`` - ``owner`` - - ``index`` (sets the order of appearance in the tree. If absent, inherited nodes will take precedence over plain ones) + - ``index`` (sets the order of appearance in the tree; if absent, inherited nodes will take precedence over plain ones) - ``groups`` -The first node in the file, which is also the scene root, must not have a -``parent=Path/To/Node`` entry in its heading. All scene files should have +The first node in the file, which is also the scene root, must **not** have a +``parent="Path/To/Node"`` entry in its heading. All scene files should have exactly *one* scene root. If it doesn't, Godot will fail to import the file. The parent path of other nodes should be absolute, but shouldn't contain the scene root's name. If the node is a direct child of the scene root, @@ -94,172 +120,140 @@ the path should be ``"."``. Here is an example scene tree :: - [node name="Player" type="Node3D"] ; The scene root - [node name="Arm" parent="." type="Node3D"] ; Parented to the scene root - [node name="Hand" parent="Arm" type="Node3D"] - [node name="Finger" parent="Arm/Hand" type="Node3D"] + [node name="Player" type="Node3D"] ; The scene root + [node name="Arm" type="Node3D" parent="."] ; Parented to the scene root + [node name="Hand" type="Node3D" parent="Arm"] ; Child of "Arm" + [node name="Finger" type="Node3D" parent="Arm/Hand"] ; Child of "Hand" +.. tip:: -Similar to the internal resource, the document for each node is currently -incomplete. Fortunately, it is easy to find out because you can simply -save a file with that node in it. Some example nodes are: + To make the file structure easier to grasp, you can saving a file with any + given node or resource then inspect it yourself in an external editor. You + can also make incremental changes in the Godot editor, and keep an external + text editor open on the ``.tscn`` or ``.tres`` file with auto-reload enabled + to see what changes. -:: - - [node type="CollisionShape" name="SphereCollision" parent="SpherePhysics"] - - shape = SubResource(8) - transform = Transform( 1.0 , 0.0 , -0.0 , 0.0 , -4.371138828673793e-08 , 1.0 , -0.0 , -1.0 , -4.371138828673793e-08 ,0.0 ,0.0 ,-0.0 ) +Here is an example of a scene containing a RigidBody3D-based ball with +collision, visuals (mesh + light) and a camera parented to the RigidBody3D: +:: - [node type="MeshInstance3D" name="Sphere" parent="SpherePhysics"] + [gd_scene load_steps=4 format=3 uid="uid://cecaux1sm7mo0"] - mesh = SubResource(9) - transform = Transform( 1.0 , 0.0 , -0.0 , 0.0 , 1.0 , -0.0 , -0.0 , -0.0 , 1.0 ,0.0 ,0.0 ,-0.0 ) + [sub_resource type="SphereShape3D" id="SphereShape3D_tj6p1"] + [sub_resource type="SphereMesh" id="SphereMesh_4w3ye"] - [node type="OmniLight" name="Lamp" parent="."] + [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_k54se"] + albedo_color = Color(1, 0.639216, 0.309804, 1) - light_energy = 1.0 - light_specular = 1.0 - transform = Transform( -0.29086464643478394 , -0.7711008191108704 , 0.5663931369781494 , -0.05518905818462372 , 0.6045246720314026 , 0.7946722507476807 , -0.9551711678504944 , 0.199883371591568 , -0.21839118003845215 ,4.076245307922363 ,7.3235554695129395 ,-1.0054539442062378 ) - omni_range = 30 - shadow_enabled = true - light_negative = false - light_color = Color( 1.0, 1.0, 1.0, 1.0 ) + [node name="Ball" type="RigidBody3D"] + [node name="CollisionShape3D" type="CollisionShape3D" parent="."] + shape = SubResource("SphereShape3D_tj6p1") - [node type="Camera" name="Camera" parent="."] + [node name="MeshInstance3D" type="MeshInstance3D" parent="."] + mesh = SubResource("SphereMesh_4w3ye") + surface_material_override/0 = SubResource("StandardMaterial3D_k54se") - projection = 0 - near = 0.10000000149011612 - fov = 50 - transform = Transform( 0.6859206557273865 , -0.32401350140571594 , 0.6515582203865051 , 0.0 , 0.8953956365585327 , 0.44527143239974976 , -0.7276763319969177 , -0.3054208755493164 , 0.6141703724861145 ,14.430776596069336 ,10.093015670776367 ,13.058500289916992 ) - far = 100.0 + [node name="OmniLight3D" type="OmniLight3D" parent="."] + light_color = Color(1, 0.698039, 0.321569, 1) + omni_range = 10.0 + [node name="Camera3D" type="Camera3D" parent="."] + transform = Transform3D(1, 0, 0, 0, 0.939693, 0.34202, 0, -0.34202, 0.939693, 0, 1, 3) NodePath ~~~~~~~~ A tree structure is not enough to represent the whole scene. Godot uses a ``NodePath(Path/To/Node)`` structure to refer to another node or attribute of -the node anywhere in the scene tree. For instance, MeshInstance3D uses -``NodePath()`` to point to its skeleton. Likewise, Animation tracks use -``NodePath()`` to point to node properties to animate. +the node anywhere in the scene tree. Paths are relative to the current node, +with ``NodePath(".")`` pointing to the current node and ``NodePath("")`` +pointing to no node at all. -:: - - [node name="mesh" type="MeshInstance3D" parent="Armature001"] +For instance, MeshInstance3D uses ``NodePath()`` to point to its skeleton. +Likewise, Animation tracks use ``NodePath()`` to point to node properties to +animate. - mesh = SubResource(1) - skeleton = NodePath("..:") +NodePath can also point to a property using a ``:property_name`` suffix, and +even point to a specific component for vector, transform and color types. This +is used by Animation resources to point to specific properties to animate. For +example, ``NodePath("MeshInstance3D:scale.x")`` points to the ``x`` component of +the ``scale`` Vector3 property in MeshInstance3D. +For example, the ``skeleton`` property in the MeshInstance3D node called +``mesh`` points to its parent, ``Armature01``: :: - [sub_resource id=3 type="Animation"] + [node name="mesh" type="MeshInstance3D" parent="Armature01"] + skeleton = NodePath("..") - ... - tracks/0/type = "transform" - tracks/0/path = NodePath("Cube:") - ... +Skeleton3D +~~~~~~~~~~ +The :ref:`class_Skeleton3D` node inherits the Node3D node, but may alsohave a +list of bones described in key-value pairs in the format +``bones// = value``. The bone attributes consist of: -Skeleton -~~~~~~~~ +- ``position``: Vector3 +- ``rotation``: Quaternion +- ``scale``: Vector3 -The Skeleton node inherits the Node3D node, but also may have a list of bones -described in key-value pairs in the format ``bones/Id/Attribute=Value``. The -bone attributes consist of: - -- ``name`` -- ``parent`` -- ``rest`` -- ``pose`` -- ``enabled`` -- ``bound_children`` - -1. ``name`` must be the first attribute of each bone. -2. ``parent`` is the index of parent bone in the bone list, with parent index, - the bone list is built to a bone tree. -3. ``rest`` is the transform matrix of bone in its "resting" position. -4. ``pose`` is the pose matrix; use ``rest`` as the basis. -5. ``bound_children`` is a list of ``NodePath()`` which point to - BoneAttachments belonging to this bone. +These attributes are all optional. For instance, a bone may only define +``position`` or ``rotation`` without defining the other properties. Here's an example of a skeleton node with two bones: :: - [node name="Skeleton" type="Skeleton" parent="Armature001" index="0"] + [node name="Skeleton3D" type="Skeleton3D" parent="PlayerModel/Robot_Skeleton" index="0"] + bones/1/position = Vector3(0.114471, 2.19771, -0.197845) + bones/1/rotation = Quaternion(0.191422, -0.0471201, -0.00831942, 0.980341) + bones/2/position = Vector3(-2.59096e-05, 0.236002, 0.000347473) + bones/2/rotation = Quaternion(-0.0580488, 0.0310587, -0.0085914, 0.997794) + bones/2/scale = Vector3(0.9276, 0.9276, 0.9276) - bones/0/name = "Bone.001" - bones/0/parent = -1 - bones/0/rest = Transform( 1, 0, 0, 0, 0, -1, 0, 1, 0, 0.038694, 0.252999, 0.0877164 ) - bones/0/pose = Transform( 1.0, 0.0, -0.0, 0.0, 1.0, -0.0, -0.0, -0.0, 1.0, 0.0, 0.0, -0.0 ) - bones/0/enabled = true - bones/0/bound_children = [ ] - bones/1/name = "Bone.002" - bones/1/parent = 0 - bones/1/rest = Transform( 0.0349042, 0.99939, 0.000512929, -0.721447, 0.0248417, 0.692024, 0.691589, -0.0245245, 0.721874, 0, 5.96046e-08, -1.22688 ) - bones/1/pose = Transform( 1.0, 0.0, -0.0, 0.0, 1.0, -0.0, -0.0, -0.0, 1.0, 0.0, 0.0, -0.0 ) - bones/1/enabled = true - bones/1/bound_children = [ ] +BoneAttachment3D +~~~~~~~~~~~~~~~~ +The :ref:`class_BoneAttachment3D` node is an intermediate node to describe some +node being parented to a single bone in a Skeleton node. The BoneAttachment has +a ``bone_name = "name of bone"`` property, as well as a property for the matching +bone index. -BoneAttachment -~~~~~~~~~~~~~~ - -BoneAttachment node is an intermediate node to describe some node being parented -to a single bone in a Skeleton node. The BoneAttachment has a -``bone_name=NameOfBone`` attribute, and the corresponding bone being the parent has the -BoneAttachment node in its ``bound_children`` list. - -An example of one MeshInstance3D parented to a bone in Skeleton: +An example of a :ref:`class_Marker3D` node parented to a bone in Skeleton: :: - [node name="Armature" type="Skeleton" parent="."] - - transform = Transform(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, -0.0219986, 0.0125825, 0.0343127) - bones/0/name = "Bone" - bones/0/parent = -1 - bones/0/rest = Transform(1.0, 0.0, 0.0, 0.0, 0.0, -1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) - bones/0/pose = Transform(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) - bones/0/enabled = true - bones/0/bound_children = [NodePath("BoneAttachment:")] - - [node name="BoneAttachment" type="BoneAttachment" parent="Armature"] - - bone_name = "Bone" - - [node name="Cylinder" type="MeshInstance3D" parent="Armature/BoneAttachment"] - - mesh = SubResource(1) - transform = Transform(1.0, 0.0, 0.0, 0.0, 1.86265e-09, 1.0, 0.0, -1.0, 0.0, 0.0219986, -0.0343127, 2.25595) + [node name="GunBone" type="BoneAttachment3D" parent="PlayerModel/Robot_Skeleton/Skeleton3D" index="5"] + transform = Transform3D(0.333531, 0.128981, -0.933896, 0.567174, 0.763886, 0.308015, 0.753209, -0.632331, 0.181604, -0.323915, 1.07098, 0.0497144) + bone_name = "hand.R" + bone_idx = 55 + [node name="ShootFrom" type="Marker3D" parent="PlayerModel/Robot_Skeleton/Skeleton3D/GunBone"] + transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.4, 0) AnimationPlayer ~~~~~~~~~~~~~~~ -AnimationPlayer works as an animation library. It stores animations listed in -the format ``anim/Name=SubResource(ResourceId)``; each line refers to an -Animation resource. All the animation resources use the root node of -AnimationPlayer. The root node is stored as -``root_node=NodePath(Path/To/Node)``. +The :ref:`class_AnimationPlayer` node works with one or more animation libraries +stored in :ref:`class_AnimationLibrary` resources. An animation library is a +collection of individual :ref:`class_Animation` resources, whose structure is +documented :ref:`here `. -:: - - [node name="AnimationPlayer" type="AnimationPlayer" parent="." index="1"] - - root_node = NodePath("..") - autoplay = "" - playback_process_mode = 1 - playback_default_blend_time = 0.0 - playback_speed = 1.0 - anims/default = SubResource( 2 ) - blend_times = [ ] +This split between animations themselves and animation libraries was done in +Godot 4, so that animations can be imported separately from 3D meshes, which is +a common workflow in 3D animation software. See the `original pull request +`__ for details. +If the library name is empty, then it acts acts the unique source of animations +for this AnimationPlayer. This allows using ```` directly to +play animations from script. If you name the library, then you must play it as +``/``. This ensures backwards compatibility and +keeps the existing workflow if you don't want to use multiple animation +libraries. Resources --------- @@ -268,20 +262,26 @@ Resources are components that make up the nodes. For example, a MeshInstance3D node will have an accompanying ArrayMesh resource. The ArrayMesh resource may be either internal or external to the TSCN file. -References to the resources are handled by ``id`` numbers in the resource's -heading. External resources and internal resources are referred to with -``ExtResource(id)`` and ``SubResource(id)``, respectively. Because there +References to the resources are handled by unique string-based IDs in the +resource's heading. This is different from the ``uid`` property, which each +external resource also has (but subresources don't). + +External resources and internal resources are referred to with +``ExtResource("id")`` and ``SubResource("id")``, respectively. Because there have different methods to refer to internal and external resources, you can have the same ID for both an internal and external resource. -For example, to refer to the resource ``[ext_resource id=3 type="PackedScene" -path=....]``, you would use ``ExtResource(3)``. +For example, to refer to the resource +``[ext_resource type="Material" uid="uid://c4cp0al3ljsjv" path="res://material.tres" id="1_7bt6s"]``, +you would use ``ExtResource("1_7bt6s")``. External resources ~~~~~~~~~~~~~~~~~~ External resources are links to resources not contained within the TSCN file -itself. An external resource consists of a path, a type and an ID. +itself. An external resource consists of a path, a type, an UID (used to map its +filesystem location to an unique identifier) and an ID (used to refer to the +resource in the scene file). Godot always generates absolute paths relative to the resource directory and thus prefixed with ``res://``, but paths relative to the TSCN file's location @@ -291,13 +291,14 @@ Some example external resources are: :: - [ext_resource path="res://characters/player.dae" type="PackedScene" id=1] - [ext_resource path="metal.tres" type="Material" id=2] - + [ext_resource type="Texture2D" uid="uid://ccbm14ebjmpy1" path="res://gradient.tres" id="2_eorut"] + [ext_resource type="Material" uid="uid://c4cp0al3ljsjv" path="material.tres" id="1_7bt6s"] Like TSCN files, a TRES file may contain single-line comments starting with a semicolon (``;``). However, comments will be discarded when saving the resource using the Godot editor. +Whitespace within a TRES file is not significant (except within strings), but +extraneous whitespace will be discarded when saving the file. Internal resources ~~~~~~~~~~~~~~~~~~ @@ -310,140 +311,208 @@ heading. For example, a capsule collision shape looks like: :: - [sub_resource type="CapsuleShape" id=2] - - radius = 0.5 + [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_fdxgg"] + radius = 1.0 height = 3.0 - Some internal resources contain links to other internal resources (such as a mesh having a material). In this case, the referring resource must appear *before* the reference to it. This means that order matters in the file's internal resources section. -Unfortunately, documentation on the formats for these subresources isn't -complete. Some examples can be found by inspecting saved resource files, but -others can only be found by looking through Godot's source. - ArrayMesh ~~~~~~~~~ -ArrayMesh consists of several surfaces, each in the format ``surface\Index={}``. -Each surface is a set of vertices and a material. - -TSCN files support two surface formats: +An ArrayMesh consists of several surfaces contained in the ``_surfaces`` array +(notice the leading underscore). Each surface's data is stored in a dictionary +with the following keys: + +- ``aabb``: The computed axis-aligned bounding box for visibility. + ``Mesh.PrimitiveType`` Godot enum. ``0`` = points, ``1`` = lines, ``2`` = line + strip, ``3`` = triangles (most common), ``4`` = triangle strip. +- ``attribute_data``: Vertex attribute data, such as normals, tangents, vertex + colors, UV1, UV2 and custom vertex data. +- ``bone_aabbs``: The axis-aligned bounding box of each bone for visibility. +- ``format``: The surface's buffer format. +- ``index_count``: The number of indices in the surface. This must match + ``index_data``'s size. +- ``index_data``: The index data, which determines which vertices from + ``vertex_data`` are drawn. +- ``lods``: Level of detail variations, stored as an array. Each LOD level + represents two values in the array. The first value is the percentage of + screen space the LOD level is most suited for (edge length); the second value + is the list of indices that should be drawn for the given LOD level. +- ``material``: The material used when drawing the surface. +- ``name``: The surface's name. This can be used in scripts and is imported from + 3D DCCs. +- ``primitive``: The surface's primitive type, matching the +- ``skin_data``: Bone weight data. +- ``vertex_count``: Number of vertices in the surface. This must match ``vertex_data``'s size. +- ``vertex_data``: The vertex position data. + +Here's an example of an ArrayMesh saved to its own ``.tres`` file. Some fields were shortened with ``...`` for brevity: -1. For the old format, each surface has three essential keys: - -- ``primitive`` -- ``arrays`` -- ``morph_arrays`` +:: - i. ``primitive`` is an enumerate variable, ``primitive=4`` which is - ``PRIMITIVE_TRIANGLES`` is frequently used. + [gd_resource type="ArrayMesh" load_steps=2 format=3 uid="uid://dww8o7hsqrhx5"] + + [ext_resource type="Material" path="res://player/model/playerobot.tres" id="1_r3bjq"] + + [resource] + resource_name = "player_Sphere_016" + _surfaces = [{ + "aabb": AABB(-0.207928, 1.21409, -0.14545, 0.415856, 0.226569, 0.223374), + "attribute_data": PackedByteArray(63, 121, ..., 117, 63), + "bone_aabbs": [AABB(0, 0, 0, -1, -1, -1), ..., AABB(-0.207928, 1.21409, -0.14545, 0.134291, 0.226569, 0.223374)], + "format": 7191, + "index_count": 1224, + "index_data": PackedByteArray(30, 0, ..., 150, 4), + "lods": [0.0382013, PackedByteArray(33, 1, ..., 150, 4)], + "material": ExtResource("1_r3bjq"), + "name": "playerobot", + "primitive": 3, + "skin_data": PackedByteArray(15, 0, ..., 0, 0), + "vertex_count": 1250, + "vertex_data": PackedByteArray(196, 169, ..., 11, 38) + }] + blend_shape_mode = 0 + +.. _doc_tscn_animation: - ii. ``arrays`` is a two-dimensional array, it contains: +Animation +~~~~~~~~~ - 1. Vertex positions array - 2. Normals array - 3. Tangents array - 4. Vertex colors array - 5. UV array 1 - 6. UV array 2 - 7. Bone indexes array - 8. Bone weights array - 9. Vertex indexes array +Each animation has the following properties: - iii. ``morph_arrays`` is an array of morphs. Each morph is exactly an - ``arrays`` without the vertex indexes array. +- ``length``: The animation's length in seconds. Note that keyframes may be + placed outside the ``[0; length]`` interval, but they may have no effect + depending on the interpolation mode chosen. +- ``loop_mode``: ``0`` = no looping, ``1`` = wrap-around looping, ``2`` = + clamped looping. +- ``step``: The step size to use when editing this animation in the editor. + This is only used in the editor; it doesn't affect animation playback in any way. -An example of ArrayMesh: +Each track is described by a list of key-value pairs in the format +``tracks//``. Each track includes: + +- ``type``: The track's type. This defines what kind of properties may be + animated by this track, and how it'll be exposed to the user in the editor. + Valid types are ``value`` (generic property track), ``position_3d``, + ``rotation_3d``, ``scale_3d``, ``blend_shape`` (optimized 3D animation + tracks), ``method`` (method call tracks), ``bezier`` (Bezier curve tracks), + ``audio`` (audio playback tracks), ``animation`` (tracks that play other + animations). +- ``imported``: ``true`` if the track was created from an imported 3D scene, + ``false`` if it was manually created by the user in the Godot editor or using + a script. +- ``enabled``: ``true`` if the track is effective, ``false`` if it was disabled + in the editor. +- ``path``: Path to the node property that will be affected by the track. The + property is written after the node path with a ``:`` separator. +- ``interp``: The interpolation mode to use. ``0`` = nearest, ``1`` = linear, + ``2`` = cubic, ``3`` = linear angle, ``4`` = cubic angle. +- ``loop_wrap``: ``true`` if the track is designed to wrap around when the + animation is looping, ``false`` if the track clamps to the first/last + keyframes. +- ``keys``: The animation track's values. This attribute's structure depends on the ``type``. + +Here is a scene containing an AnimationPlayer that scales down a cube over time +using a generic property track. The AnimationLibrary workflow was not used, so +the animation library has an empty name (but the animation is still given a +``scale_down`` name). Note that the ``RESET`` track was not created in this +AnimationPlayer for brevity: :: - [sub_resource id=1 type="ArrayMesh"] - - surfaces/0 = { - "primitive":4, - "arrays":[ - Vector3Array(0.0, 1.0, -1.0, 0.866025, -1.0, -0.5, 0.0, -1.0, -1.0, 0.866025, 1.0, -0.5, 0.866025, -1.0, 0.5, 0.866025, 1.0, 0.5, -8.74228e-08, -1.0, 1.0, -8.74228e-08, 1.0, 1.0, -0.866025, -1.0, 0.5, -0.866025, 1.0, 0.5, -0.866025, -1.0, -0.5, -0.866025, 1.0, -0.5), - Vector3Array(0.0, 0.609973, -0.792383, 0.686239, -0.609973, -0.396191, 0.0, -0.609973, -0.792383, 0.686239, 0.609973, -0.396191, 0.686239, -0.609973, 0.396191, 0.686239, 0.609973, 0.396191, 0.0, -0.609973, 0.792383, 0.0, 0.609973, 0.792383, -0.686239, -0.609973, 0.396191, -0.686239, 0.609973, 0.396191, -0.686239, -0.609973, -0.396191, -0.686239, 0.609973, -0.396191), - null, ; No Tangents, - null, ; no Vertex Colors, - null, ; No UV1, - null, ; No UV2, - null, ; No Bones, - null, ; No Weights, - IntArray(0, 2, 1, 3, 1, 4, 5, 4, 6, 7, 6, 8, 0, 5, 9, 9, 8, 10, 11, 10, 2, 1, 10, 8, 0, 1, 3, 3, 4, 5, 5, 6, 7, 7, 8, 9, 5, 0, 3, 0, 9, 11, 9, 5, 7, 9, 10, 11, 11, 2, 0, 10, 1, 2, 1, 6, 4, 6, 1, 8) - ], - "morph_arrays":[] - } + [gd_scene load_steps=4 format=3 uid="uid://cdyt3nktp6y6"] + [sub_resource type="Animation" id="Animation_r2qdp"] + resource_name = "scale_down" + length = 1.5 + loop_mode = 2 + step = 0.05 + tracks/0/type = "value" + tracks/0/imported = false + tracks/0/enabled = true + tracks/0/path = NodePath("Box:scale") + tracks/0/interp = 1 + tracks/0/loop_wrap = true + tracks/0/keys = { + "times": PackedFloat32Array(0, 1), + "transitions": PackedFloat32Array(1, 1), + "update": 0, + "values": [Vector3(1, 1, 1), Vector3(0, 0, 0)] + } -Animation -~~~~~~~~~ + [sub_resource type="AnimationLibrary" id="AnimationLibrary_4qx36"] + _data = { + "scale_down": SubResource("Animation_r2qdp") + } -An animation resource consists of tracks. Besides, it has ``length``, ``loop`` -and ``step`` applied to all the tracks. + [sub_resource type="BoxMesh" id="BoxMesh_u688r"] -1. ``length`` and ``step`` are both durations in seconds. + [node name="Node3D" type="Node3D"] -Each track is described by a list of key-value pairs in the format -``tracks/Id/Attribute``. Each track includes: + [node name="AnimationPlayer" type="AnimationPlayer" parent="."] + autoplay = "scale_down" + libraries = { + "": SubResource("AnimationLibrary_4qx36") + } -- ``type`` -- ``path`` -- ``interp`` -- ``keys`` -- ``loop_wrap`` -- ``imported`` -- ``enabled`` + [node name="Box" type="MeshInstance3D" parent="."] + mesh = SubResource("BoxMesh_u688r") -1. The ``type`` must be the first attribute of each track. - The value of ``type`` can be: +For generic property ``value`` tracks, ``keys`` is a dictionary containing 3 +arrays with positions in ``times`` (PackedFloat32Array), easing values in +``transitions`` (PackedFloat32Array) and values in ``values`` (Array). There is +an additional ``update`` property, which is an integer with the values ``0`` = +continuous, ``1`` = discrete, ``2`` = capture. - - ``transform`` - - ``value`` - - ``method`` +Here is a second Animation resource that makes use of the 3D Position and 3D +Rotation tracks. These tracks (in addition to the 3D Scale track) replace +Transform tracks from Godot 3. They are optimized for fast playback and can +optionally be compressed. -2. The ``path`` has the format ``NodePath(Path/To/Node:attribute)``. - It's the path to the animated node or attribute, relative to the root node - defined in the AnimationPlayer. +The downside of these optimized track types is that they can't use custom easing +values. Instead, all keyframes use linear interpolation. That said, you can +still opt for using nearest or cubic interpolation for all keyframes in a given +track by changing the track's interpolation mode. -3. The ``interp`` is the method to interpolate frames from the keyframes. - It is an enum variable with one of the following values: +:: - - ``0`` (constant) - - ``1`` (linear) - - ``2`` (cubic) + [sub_resource type="Animation" id="Animation_r2qdp"] + resource_name = "move_and_rotate" + length = 1.5 + loop_mode = 2 + step = 0.05 + tracks/0/type = "position_3d" + tracks/0/imported = false + tracks/0/enabled = true + tracks/0/path = NodePath("Box") + tracks/0/interp = 1 + tracks/0/loop_wrap = true + tracks/0/keys = PackedFloat32Array(0, 1, 0, 0, 0, 1.5, 1, 1.5, 1, 0) + tracks/1/type = "rotation_3d" + tracks/1/imported = false + tracks/1/enabled = true + tracks/1/path = NodePath("Box") + tracks/1/interp = 1 + tracks/1/loop_wrap = true + tracks/1/keys = PackedFloat32Array(0, 1, 0.211, -0.047, 0.211, 0.953, 1.5, 1, 0.005, 0.976, -0.216, 0.022) -4. The ``keys`` correspond to the keyframes. It appears as a ``PackedFloat32Array()``, - but may have a different structure for tracks with different types. +For 3D position, rotation and scale tracks, ``keys`` is a PackedFloat32Array +with all values stored in a sequence. - - A Transform track uses every 12 real numbers in the ``keys`` to describe - a keyframe. The first number is the timestamp. The second number is the - transition followed by a 3-number translation vector, followed by a - 4-number rotation quaternion (X, Y, Z, W) and finally a 3-number - scale vector. The default transition in a Transform track is 1.0. +In the visual guide below, ``T`` is the keyframe's time in seconds since the +start of the animation, ``E`` is the keyframe's transition (currently always +``1``). For 3D position and scale tracks, ``X``, ``Y``, ``Z`` are the Vector3's +coordinates. For 3D rotation tracks, ``X``, ``Y``, ``Z`` and ``W`` are the +Quaternion's coordinates. :: - [sub_resource type="Animation" id=2] + # For 3D position and scale, which use Vector3: + tracks//keys = PackedFloat32Array(T, E, X, Y, Z, T, E, X, Y, Z, ...) - length = 4.95833 - loop = false - step = 0.1 - tracks/0/type = "transform" - tracks/0/path = NodePath("Armature001") - tracks/0/interp = 1 - tracks/0/loop_wrap = true - tracks/0/imported = true - tracks/0/enabled = true - tracks/0/keys = PackedFloat32Array( 0, 1, -0.0358698, -0.829927, 0.444204, 0, 0, 0, 1, 0.815074, 0.815074, 0.815074, 4.95833, 1, -0.0358698, -0.829927, 0.444204, 0, 0, 0, 1, 0.815074, 0.815074, 0.815074 ) - tracks/1/type = "transform" - tracks/1/path = NodePath("Armature001/Skeleton:Bone.001") - tracks/1/interp = 1 - tracks/1/loop_wrap = true - tracks/1/imported = true - tracks/1/enabled = false - tracks/1/keys = PackedFloat32Array( 0, 1, 0, 5.96046e-08, 0, 0, 0, 0, 1, 1, 1, 1, 4.95833, 1, 0, 5.96046e-08, 0, 0, 0, 0, 1, 1, 1, 1 ) + # For 3D rotation, which use Quaternion: + tracks//keys = PackedFloat32Array(T, E, X, Y, Z, W, T, E, X, Y, Z, W, ...) From 82fac20c980711ba47d8eb37631edede787b8496 Mon Sep 17 00:00:00 2001 From: Yuri Sizov <11782833+YuriSizov@users.noreply.github.com> Date: Thu, 6 Jul 2023 09:41:07 +0200 Subject: [PATCH 051/133] Update Godot version to 4.2 --- conf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf.py b/conf.py index 6a20a44472d2..49c7638da9da 100644 --- a/conf.py +++ b/conf.py @@ -182,7 +182,7 @@ # Set this to `True` when in the `latest` branch to clearly indicate to the reader # that they are not reading the `stable` documentation. "godot_is_latest": True, - "godot_version": "4.1", + "godot_version": "4.2", # Enables a banner that displays the up-to-date status of each article. "godot_show_article_status": True, } From b9b79fe4c74a24eb2ff80fb2ff9fb20fa82a5445 Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Thu, 6 Jul 2023 19:59:20 +0200 Subject: [PATCH 052/133] Update screenshots in Introduction section --- .../introduction/godot_design_philosophy.rst | 2 -- .../introduction/img/introduction_editor.png | Bin 91255 -> 0 bytes .../introduction/img/introduction_editor.webp | Bin 0 -> 168230 bytes .../img/key_concepts_character_nodes.png | Bin 4799 -> 0 bytes .../img/key_concepts_character_nodes.webp | Bin 0 -> 6206 bytes .../img/key_concepts_main_menu.png | Bin 42726 -> 0 bytes .../img/key_concepts_main_menu.webp | Bin 0 -> 101554 bytes .../img/key_concepts_scene_example.png | Bin 23189 -> 0 bytes .../img/key_concepts_scene_example.webp | Bin 0 -> 24450 bytes .../manual_class_reference_inheritance.webp | Bin 13094 -> 8868 bytes .../img/manual_class_reference_search.png | Bin 8500 -> 0 bytes .../img/manual_class_reference_search.webp | Bin 0 -> 9710 bytes getting_started/introduction/index.rst | 2 -- .../introduction/introduction_to_godot.rst | 4 +--- .../introduction/key_concepts_overview.rst | 8 +++----- .../introduction/learning_new_features.rst | 4 +--- 16 files changed, 5 insertions(+), 15 deletions(-) delete mode 100644 getting_started/introduction/img/introduction_editor.png create mode 100644 getting_started/introduction/img/introduction_editor.webp delete mode 100644 getting_started/introduction/img/key_concepts_character_nodes.png create mode 100644 getting_started/introduction/img/key_concepts_character_nodes.webp delete mode 100644 getting_started/introduction/img/key_concepts_main_menu.png create mode 100644 getting_started/introduction/img/key_concepts_main_menu.webp delete mode 100644 getting_started/introduction/img/key_concepts_scene_example.png create mode 100644 getting_started/introduction/img/key_concepts_scene_example.webp delete mode 100644 getting_started/introduction/img/manual_class_reference_search.png create mode 100644 getting_started/introduction/img/manual_class_reference_search.webp diff --git a/getting_started/introduction/godot_design_philosophy.rst b/getting_started/introduction/godot_design_philosophy.rst index d25eec558098..4a3160d307ba 100644 --- a/getting_started/introduction/godot_design_philosophy.rst +++ b/getting_started/introduction/godot_design_philosophy.rst @@ -1,5 +1,3 @@ -:article_outdated: True - .. _doc_godot_design_philosophy: Godot's design philosophy diff --git a/getting_started/introduction/img/introduction_editor.png b/getting_started/introduction/img/introduction_editor.png deleted file mode 100644 index 8e0f8a2f722433bad87d9d248c9719903ba8028e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 91255 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 RB^C6iqhY9CqIxg%zW_X7{?z~g diff --git a/getting_started/introduction/img/introduction_editor.webp b/getting_started/introduction/img/introduction_editor.webp new file mode 100644 index 0000000000000000000000000000000000000000..6fc10915e63cbd6e9d561b3e11554917a2d1da3a GIT binary patch literal 168230 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

`0a{IiXfL z%#CFJ?>oeFKOHvJE2N)2Jitgli#`L;Qx=QV2Ld&6P<&RDL8jEUXwUOklm&n@5iEe*d2Oa)z5#(v@BQ6|MDcuP0vN9~PmTOsnEo11S*sFSSS zi?T7!_VzYf9>XRN)B5adosYFn2utnm%tns&Ah;&YW^~N(s;MKcrBv*~nU!O`@gLRo z^Yg-3dbhcS$6{-T+WBWgy;czw;tqi~a-LJMuEUZ|S$TlY)QYmWJg?VVAb^dg(_2Eu zkwsPO(VP+!)nVM$ae(JzqTL2Q)-FN!@$m^a=Ht*3#PC7AxJZ_~4A{L`A@f;v?{aO4 z5-E1|Vd~9c&8VQN1x9q3N$UOHx=3fuX4eyJlY9TY*J3-j&tm(cOTf!{-HXEKzOm-; zuaHpC-R-Z6pq3FLCL72A?b#J5G_PBXt`>(n46*K$pwLv=Wrh_ICRD325AVO|G_-m@W|7rwn z6H55c)BJzZxI;efWisWp`Pi8lL=5WN%e>;+$rP#!@V2ajD5wR0#LR;90_!lf9;<^A z3ScVVOrDJnbZcR}p72OfJf1l7e_=n{VQI}mp+1@y+*~bqIz5B7{^PAYDb?26uxjCE zH?as?kjbcXd>FyMmJjr=HcMk;q4e_J1(+zkPh(?-wU+4FQlsbEJS{xIHa4ZOG)EB% zB=9O%&~AcnO&=8e{p=+K+&CMe;6%@ooE_bqIy~-Mr}pdNQ3v70u_vUzQ}aO-lVd4Z zd9haO)(oN7onu|iy{vCpeFST^X_Cb%an@@>nm8v-0`5>$)3$>Cn0@A2>~*R0f(L;( zI9N6l;w?&Kbka1B?_ga1wP0^VOWWo+O52b#E4Db*SgX?Q}1n*=bmKAD9>(`xdgQ5LZXZT(*W;11LJ8bYG zWL|tUJAdGrs(QW|J>7wN}Rz2Fnj~SK?bgs-Bsvuh8hav}* z27zYvTp9R(!t$(Y-PF8ZpZS5a&Bn7$!L;IX;ol}mm$dR$N*T5*e;D6Ow_RRU9^5OI zM5!mIJl;Mc>Vql2I;^zX?jay=ov(Q^5ByRX=_5E_Furm^BKSho6E^bu4D_zHwyuM0l#J)J zJ0tOAlq$dEl#UEMYMonG&jbyrsUE}mh&93_GNk?#|9i=N+&Ah<3BiYPJ}=tRe_Qv+ z*v0WfBz)?L%<1Af3DeT@7V>F@;4;+6WR-StJ1C!{`={}z`0ig*HOv_7l0;?P#t;Bi z=ImrZ`K+Lw&S&}EjgF^E5r3aNn~suG!u3dN9hW+2{&z>mFcs0=C}1~8V) zP1!lp0M6A-r|Mf@l%{r`Ve63Yv~E2Wo)DBfNGbUqJXcV3{1{e%c^ufsMKw>#D7;BP z&iSnB*EPPBfG73W!aXKi)^Gs<;*l-l>6*FUSSttukp?AXcQi!iWzA~wk?bnqobk@y z1NYh3eVwt%IKzl!_fdl%_fENk6_y`tgRKMlh)Q?#3z0bHRnq}93=?&j*5cyZpGamU zn8I_iR*=(6*0k_2`15mpGQcK%n64A1eS%0|y&SSV>Onq+Hh9tgva>tj9>(zr!Moj~ z$nNV-RT}Jf4;yk zF8I~u(Ct+O-~mOlXf5*SE!~F9Noj%<7E;Oz;86_>lqeeM72DS^IZ*IqCe-f=35wgv z8+ht|;ivu#NN+R7o((m5ud@Ylg6R zN~QJKW1UtVD6wMtO(f6Y=RM>#Qk`LKh*AnGHkJ1y%=wurv_lp)FbbXp(uYHY>T&fV zYT0yFT2kwOq)4MRsQ8}@4BC$Ru*-a|V%rGdXU2BFOSzive@Xq}CiM5=r&&lUEoRk9 z_d5|DBI?f1XaNd_4hL%lSPa>kzeB4YP{ENUI;tp(P!Hw=f)awDEg9N0FX{333^b2b%=44k;KhQo#>#u;T7`WoRrCq^qLW$qrOeeIB<+6Rxh2EHZ2Uhg9g;=4nO zaAL3Y7{&2*4IJN8-K#F245iJkv3tdT(Q?PtL~^zhUUgW}pE@f2cv1|av-q4ZhHXbP zQCM7bA6M!P5bj3ORM�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�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

dxo-rF^dZDjrb+iUJB^>&#{cpL!Zgjl=m zC7|Hyuh-0B8m_lgj2q7P#*;p7vN#DCw}p`dzxqaW@G8u#ch*PXHD6KJtx(rTMs&T1 zGa{|jJUyk;W4fL?78>W1>TW3?QSFp>5OiZy1cB2^+SSY9x*l(OXi~LxUSy6s!9(I? z5~X2%y4{sk6xIyT;gX7?p2vPQizs?ZfP$h+FwgdI7YZccD0s{;BukN1=f`4Ch+kL) zyuXTSz8yRgQz_l?1kGI`()-|$q82JkKh??ki@ z5k(4IA>C@gxk(`h4`#_zwe0}ryW)VSkGwn{g=uZu&qB_9EdSy`xj&N0KvV}Fq#hrY zM*D)|EC(Gie>8SimWU$F++xgn__p!dTH)zf>ETGdP2BbAxil3t);XFR?9zt&w9zhY zvds_Zy1~Eiy2;&EIT(rL2O^Q(daO`96bOX!dly&GJ-eZJAQZ_8R8$oABN-KyS1$+^ z6jv4(T)khZv~BOEP0&XU5AQ{nmb%REy%$fxC6h*SGH%i^F05MtE?$4VahR3Nri#U} zWL^>HIPSDKcN(|b%Bp#rB#C3(}d<3;AE z6T;!=LQ{M?I`UnZ$h6$%xIE;S^96ol+K; z-=5|!q(05+2g3ha(jGcS<+hPzo5);cOwAPpJ%ZeeYaqO$1byv^w zDJ8pUy%3Jx>#*^-=V+NS{Tans7IS4DkC7*h=**u$x|!>?>t=E{ikCrS=U_3jae$8E zvL`XLdBx`FiktDcOy+5EyZtn7H^-gEQRmCu76i)`3B__S^AV2>IUP}StQ+RxI;&o^ zTHV%^8?H-PeO8DR%9fhb3EAQ&DL0HMdQNw{)ztX7RduIOz~gY88?Mujea7>+%iH1d zcUe~6PR~JcXPd-5Yz9U%#)MD6wllJ003@wjtuKXX?cMyhBp-#Xu=t!hTgk&Xl2Iox zVo`ATo-uk38Mu2K9c*xTa2gI zLC(KCKFbXckm76*hNr%_{sjG#)!^Y%k`os*?b>NFOemW8)>PU&i}ILRh31wY^UBhK z61<2AFUd1oeON0zkhJTRah>?bfr zZol)L@4VZm>qR^=-oIL7*%y#)m0Uds5OJF=TB97N!e7jhgz!YF+wl}R{FvjX#%PIoes0x5@|d& zYwlzZGm9e4QvyCUr_2IqbF#CQXpy1!vR$N$6?;q|=Gf@a6_}D=8w$M+o1?oR54_2U zMZuxF6|SrSn79>bXKm@grNy8yNl_d!(1L-Y0j8N6HJPD#c44$0o%6VfR)d!e z)`dPnfENO&3@X-xb&J5fbTZFKf37&=aG)DsMG7Q=L*lqO3x|z5vAQ>{u*R%UF&qN zdonlPqfPgz>+a~bP1;7!X5z41!a5f}*LYfVJLn@H;+#V2s;P#eC752suHALWgv*u^1_6sK1yO@#`h=9=c+^UVI&Ix7;BS7K?Vg^zT1z=CNQ@3lFz@fh4NU^|sw4l@RDOg|P#BGp ztk)3(z46CBCf3U)+4G@;(YRSC8YLWH+B7ifLE2#*Y(iIdVL+%(y4FisLq=)i;MpXI zn*_~f0kehw9Lal*=`<&>+EeS;Z1R{}MivzsO9)X*zR~&{b$lnwz0lN~ns$A!j^cGr z$NHyZqtmg^rU#U{N11!vWtR)OZE^kenup_dJ35v+Z+HE;;)lj{dy(5+ye)_C_!8%4 zop>fVf<2{A_dybp9UOnhs zbQNL$VEMN<~?cOji~G0U|>D7WA*y z<(HN5Z((uvh$kO)gS~3BfiLT~40R(QstFT-EwKql&&wXhb`pSESz0?o>!zVz8tSJ? zgA{3)EYV>iR?`3*%l?dQd#BZzGpo_;%404inpE#hGl6Y}E&)wCo zGhBCDUy*n+X!18)tZ3LGN_B*6B&|i=I%3tW)*`f-C|FE-OjoTC`1Fr7tJ^xB8t)lT zS$otTJRJ96AE}bFlu90wdwNvJkV=m22E$;}g!m1c676ovyClT##cSM_|yM6|tMwcMtrA}#HF>xc)r_zdC^;jk48de0_Fs$--eT;Anf-sU3%jAmrfARtsN^~Bo^+F{VD zK?XJSu=c1^&dt)K1ziSCc1vcbuJ&Z*igmStYfQzRyT|IAy24jI^QVO9!Wcly1~$}q zytl285&zt5!XdkQxYv1`O9YF>^%8kIMlRc=QBng6m6OM}49Cz!^-|XmF{i1&O=Lkg zc-Y6y;qc6C#dkccxPcBwWjFD3a6IL9k3;K7prmvwHjMhXdmOt)gYWj^DSEEw)yF}k z@CcCTBMHmC={VSwaB0u=)dgk6M5>igq!OyAm5Mq8qZAEApueo_sZ^rTN>rVhiMFW8 zXe3Jcz_68&gO#EVHcC0_j3JFmk&r5}5#XTRM8c7f66~?EkiD7=ZsnA;#9$AmY5_){ z4h(0eF9=X~GvyzXjBoqlb$%^g1srt(D;5PVm(@dVj4Xve z#cnEIy(K?W7|@}ljL&*3E8}zT3Dl#mbx#u|+HUL$t>JNr2^|>czx-?YMfL32^Q1P} zBxmf{emU=uWHqCDD*Y@%DHf?(xZ6TXlzW}DYf>i720Zpc=uV5aQom#ROkT z=(Z5EPhjsXLXphq-LAk3zHK*6b#x@#eAgV3 zBco2BV^LtZh3y1{3ys1&$<7{zxT7=Qg3cwM;5h^R9nmG+F~AUt%b#*wmZ*NK^$-+G zteja@<3Cs=pt`pCC((EbGHP#+HEBSHzkh-rT2Su!@$c_&PJ>b`!Df7IhG;{AWO`m+ zZ-1llmCWTSQ#@ya)oufKI+)YB`J8jHb*cf2Cav9yhRp!G`PY7ZrmGFq`qw;p`{Y3K z$3g+x?~_E_A`u;fbXoNL#pl!9Vs~_d+2!vM;p45L_Y^`C7_j$%tZ6#%Ul)NXNN8v+ zMOQyoo=Bek^9zNBPaBpecB zWBDz{B|mc!WAH64LH^$Sy(K9~hrAS&_<)p6BzVSmZ$230d5Jd~QUC~z=CRQr3+i6G zy0)ooc62t62_!6AMLUkREF`Ks6KtMg1Tg{L^R|>Cx?7=b^F#eTWYh^%ED9`fD{>hp zeUG+0m2>sy zU@^8u*7U;7{q-EWy!3x{A29Jky9`|EVTyw*4sW$chs8RKkJ`UDgrom=K1z>N`dtrk z2ru{BBj@evd)pK{quO4-+0NI2vv+IbChqmrr{&gIM;{ccQtD+B%$IRg(LEZ_7}!RG zmIq}pi?CC|=eYxNacPw?10FA5HVKpU=23q=3KX#GJ_9la2QKp9M9MXye#(0AZ(p^! z1)hvU#0F%90HjjEb28dB6xu^MAtKd^6uDfL*yN8SrKIGD5HL}e<=w$Ok08j~dwP4Y%N+uy^l;T30_t=wzPDSzI_C8b`OdD;Sr_-#MZH0l zDc@)oXg2e-nc2Jao;vj`4Pg1l-QmZ=;6QM1fS?>A#r7$IIJ%WltpYT$ppinxz=~i* zkGt>CMFnD2`Hu6l&%9yfIa`fXq)H@m`w-Z353UPQK_t=?I$Ld06F;J|k?8G1Y=R9%98HoWogHeC zU<2BLrZ6$aCZu3;Olo0F{tbg!P;52{QVj-;Q^w0CgUM_%Il=Ru#6?DP3#{Ez@FYB% zXA3WQvO#K_@B{>n&t@RA+DQeV6DEXUfeB9nyE1_Wukit`0JNIm5ww$bc}ByKemV^o zv@M0j9AERrGO<$$pV<2xm0Y5LEXM9>!p4N#=j1m*v|;x+U$?3S!sH6W%IpRjLxiVr zL_y>p1q?gI3$OH@*vx7&zY5{%YcXzB+WD4m`!$ilp~z!H>Af!X`e^2K@nX;=^%|jk zi`H$>`gPi%4h-tGe!VuVQ{~$A{GBjwm%jdax?!$kFyAp{aFSY{Y%EUI#zQxgGY^+L zZ?Kn6=ywm!37LL&06a^`f>IrA5b)e4#`iox9B78z&v2x1L(1c`qv!e*7L!}-iL(zH z2B(_Q$(sd>Gns_#fC$_XjvpFxEyHvy%W*Wog+Y@5JpPxjdKA4ryi#(8uSD30 zhi6%dh33#9Ww&H`tg|pnf(6Z}b8zMu(NLEy7vOekbE zn?Eq&(ZHI!wAKE=XZjt~F1C;!tz}{?lNk-)JCj`L2xnJn4lT_1?(MlKz(hT~aP@Fz zS6HK}0eW|(9{@ZnudWrsg)q#5;lgG90KL(u!awTwkB*KCqyDg85EeC}u}AT6Y<|G{ z7WqaOsPEAUcPj|w;&Cf=PL4&?eojR&3zpj%GPo2EA}NlcyI3kYl|m7|=*gJ{=gM8^ zmflQ>Q_Z};df~q0I~OtJ3S85T9N|T?ziX=>X2u7`I@+mwLg|r^ne6dRmM1QE&BCYS zDicxN$*|sJ*myc@F&(s+2~%cB>sh}|c)Un>yvW?Rbg{^2@yKY=*>US>l6pRDG#n+K zomXw$);qGSU$UrN^(C74!+wghS;3OC%^hOTa-Z)e=cG2vx`P#6GR`i0ejFjZ=r0Tuj4>q_n5q1AqX zDHH@qzsbxb{g7~{2FC=&Z*)6sa3^DELzc9yAy~v1JmC33_V(;k?|#T^{gshN5>z(= zRcx*_6cz^;*v<)~UNko2;#vL#M3Wvm82N6ABH7Ewl1qHI{H6C_9Kq6HSwR}5 z%`=yZsd=73R`iHHH>6g(LeIE>_xf<*D+cFrzdOx;bdG*>4tpIUUgxOSF+BJ-D~MBHu)_IedH{+ zh*;Ppp?fT7MNlvi1XT$9eV?xD{i8tEP0jX(S}@2yd@POKt!C7KQ%%EuIkv49V7_4) z4qMDL;3)Df4QL#^AMfj*Atwa2dnb5lH63VAU}kh~5{3;L8FAKN*x*hb#JaSQhYdP9()o1S_ASJnI&2+{Z2+@0 zQUJ;##@R0XoYpr7thc_}sZea-nM5hylsca(!*JpcEURj}=~?W6b&&PaiYTiBgi!dc zvUaMvJ7M|7e=umY>$Zmcc@HOa6CpA|epF^y}4X$;Xx{Cl)Ek7cG02Ejm_dt<}Pnvo^t5sw-az@8YwbvV$F8FL*l1%~DLA zremP7Kvse5QvnW5wBaV?PUe`9TtKl?Lc$vC#2T((o{cQqD8P77zTd#(67$;0DK&OY znnGgYi_XSic$4UStM5%FGX|$%HrN|NggJV51B;j{laCrOrVBmGJ3Kc5Jsui>qisSM z5C%Y!H!)gonH2;$A%_JaC_wHKfJpEcGKFyF>Z3OaAJT4;DHOB;00KjfG6`zZmbTf_ zHxXb1!Ithop0v$moq$NtB$C!lo0!vNBv2aRX-I78ye$tH2$}~x!mqZx4IspPUd+P= zc}$=JyhV%I`^)-=5mrgn)`9WXSCZ-0{DM`&s=K=T%fc@=^ex7@jXaj(bEJau5dy%4 zHYZnovL=Ui5jaNkQ;kf0A}T?CRAho&)FtX z(+V#oXsK>$k#&x4(S|h#g=92E4uMYUJ#&OFV=)YuC)}sf&YWVygM21ela4u9Fpy(t}Sbc1NGZG~v$YwaHMqpl@>1l|r zF7$u%i?bWJq*CBIk-tAT7E*yS;O8EMcNQnOO31odc1BEfIN}CxW9d2`k5e3#Vw6n+ z2U=UqV{8w7BOzPIcBbce*9`IWZqz>t*M&_+w52hy-NNW}bmVPlJro}h*s$-jp);{V z%)>e~BS}JB7e+kn7W1SpJ505SpP96ZWd8{M6v;77$P`k{Gg)RMrbW>viinZM8KR2D zG%t3fMdT0%#Qf_ryZO8^`R_CG`QJ2V#YKx&r*brG?TP{Dx4x3r1px0}c!~jd$)93C zxS;Jde$}(x4mE+^FgpUgm+gLop$WK6JnJZ|PbbJvJn{?kDukT<1#9L-`8#Tn1*F1N zG@%ULntz%xGnBWhT}d(l@nlhId!H1m+(1>9qX==77Eo1y#id+=z@9hb7azHY2zQ=& zHvM^-i|?zs<6IYf!yzTjsPJXN>G6whcBlnNv3~Xh6h9Ar=E&=LDhJ9SM*MmNK=OeU z=!KAF5~2IWaj33DKI^hy3f#)+Rz|mC13hUrsTc&%u%-$?6%@@R1HC{D0>O#CZbaUG zGuabcWK8@qYo!b%LvWdxt5`MzNW0?0i@~JawRU zHMT({rebdh+wRn68cmuu;9m_G&v88WyN(iiB-9CFBN{vuBWcY1El{8~xLuxX3p?_7 zCnU2GI5uP;8ATB!itEy_K}Q~&M68=+K26RDzY-tFN}>Oc7z0RzC<7t^43Z^q2x^2$ z15P9OWFq*&2l3AS{hkf{gQXZ8(LlfT6(h6XS9dqP27v3p7xzwjM+1+Foy_4efM7Oa zl>y@>0xXqT6d^XhQ>~d!ke`&9ASX^i*#fX=bxu)`RNU^9B%sEXn329^7u?=TMTc3Y z`Q>hi1omPtGjrM$`oIEGlP`#eISs5pX0!eNjjHQA;_>98i%-dNzJW2rl@t6p_k z=7JlIhEP@dOuZn#uD0^&8jo#Hdc`=UvZ$V=T-D z$Q}{>nkTwGk+>6GJ)=WJRpPn<5oc(_G$IjdY?Kmt5DC#xmLv~BnI;w7*leH?AtT|E z%SDS4b6DK(e)lWp8PoXHzf9$p05(%sVHz9|F1(lRu7R+suE)Q7Juq@23axTo@a&IE zC&-U_?--9lp&5H$fq7|er-?z-AC7;6s~{Iy%u(h{#3Ut@-WAC=X49TnWE1?BP$<~r zw?#2?(P3e2`IJokl8ICvjnscHOwhkrX@G%Zlv0LXyv))@ zxkZ$YEA*{Q*U26{#2C1hQE(b>sUf^j$W-ul^w zdYVDo^kr`dx>###$6(btmKIE4Kc4?}8)*y4J3;eEt|eN?M%NMMZ0t^=iB?I*C7erV zcuIh6>h@buIJK}CIb}UEV11etli%xkY+3ZrkH}uFL*jRr!!i=&$Bijk^W@v0{l-gf zI!udVNY3qVW4s2Es_ZO@JxY!PNY+;G@=Md3?q&y^fdf5}N_%i6(L-?6GTvYFuK`1)b(>PESvZ1u*6G%g#IwG!y%cRDd=bcF~YVK^DbQN#Kb- zbJzRgV4E7B?{B|K$hxWdo}f58g~`^Y)(7Em&7!W@HW*l&s1coQ(PB8vMs@VkLX%kY zVJ{JviaaKYG;OWJCB^%Fzw=%W|8qGSVtgY*AQBx|O~i5LmtXuHjda&^g8VQ(1wW?p zq|VJ+Q|d$vou<{!t70}_9Y|JE<75Xc*?PTBN_}6R+~$yi$)_imfQsR&>VCM$qJOS& z$z{n?U*ND{h%xB_wucwlB)dPV6c*{TZ7~yKLkWEts~=h}b6N$EYF;j_w55nyGG@ z&Y*)MpZY=|8a6O({M*Z&9f?Rb_!7$>l`gI*DzHv)ysvv?&OED3{NH$COV1{ zKXY&J(<=8Jt2NgJ&w7l${?+^9oqhM}`|r(5a7eB4v|ykGNS>Z1blaTZ-r12tjh|Qh zn@ymIL4qk#GqYNxnXW0)sGbsa4w*wXEyV=yeesF#k%aFzS{?r-5%;pPDA+{-Du$e+ zSB$2P`0~bb*UWX(+$ueDNuHh!5XsIB72y`2J-Ng{f2A4oZEpyFa9iM@<&8#nTMZL+ zE_uwk9YjO6PwW$`Rji9J_CX!8uVJ?tD8wqcPHZOChwdYlX>uI_vH*%^@rt`*Gn(;= zStnrr#OWf|PZt5=bmvcqa9uN^^@$Btv5JzdLcO`!xN9t&ea*;l9#a*o=P`xYjCHx% zEceNBwd!O5eC6lKedje-&ub{Ef8GqU=JTrJ()w?WJ!e2PQ_A-m*L%h6{JP72`E)O* z7$z~OIB@K=`>#v<^yf+!9V=D0`OkaAAA51Vd-Z*C!#**G#$**!%Yu7TdT(@ep<80? z`{v$ntRvbDL9zt9A=*s803)7MkO9Y@l)uT09hoyIn8%#4gK~;qT@=yD2pR+1MD(b~ z92#4;&BbLic3Fq|i3fFABxIj1mje__5+PR}-C|?cO_lY|)HNyjeWv?Kwn90))eTO* zWDwMey1k*zh|tZ&l!w|aOIy$=Vb3jd=GDXp{!tDvk7em42@gQF1iPpiIT< zWmpD59&bOxS~?ewbJ_7Uxxs)$?SqbWT1m2MB$+ z^?#mgD5~ZD>iT9`ZeCx_<#PRf)!gZQ>(}?Kmz%5QvRt;5y;sJsN68skrT^MjR{G07 zpp@4$$PbjK8CCgg8tG#yKcG~-nwYfGR-(eV3=0C@QqO*z3_dZ*y_?6 z$?Dcwz@%{Y->qE~o|;al@Winyk;2NQD~=o%o68>5I=15o3L633^DOhla<~2W zu2t$|-izMXKY4I(92GzP?YT05uFWf^l*QV5QgHIR+R%M-LVV+!IKePZi*{Iy!=Mz4 zw;Q}{-;u9`L>rQ<*z0ti^MdZc-Es2txQ#VPM+?{QiZ%4 zc`j3cc7sos%ZBi&DP0Zvjg{->>hXIdl%V+Z#TI8P?mUg1a|oU+wlP4ADQ4QNrx{pe zc7aMSRHzAq#jOP-*U@)#c@;&5bh%s##du+q-<9IyeK%SGkat5GW!hp?EIF@oZCQ3Y zE#7NWiqijXUZ~4nr<{AYoYVVmio&1@=uno+E`=t4o--(3mn)|bkc!KTUy`E8ilr(8 zh0E(yfJ3&RIFYO0(2>0^22hOa+V2Kmv5Kl8+a5%omO1aE*ZZJ z^84fkf(3z-M<@s^hg#n+~15ndvD%5 zz-any7tR2m6nsK(NGWD$E#|w0WuE5DS{I}lzBE}ZudHmyOaFAAc`^e7xkO+d`2)oj z_S+IrT;&~`-BrUw{!7u<_~&Pk<^P0#@)moXB0W8hGIpgSJ9_LgQtbyv_JEMp#Nu4% zeN;7ka+Hk}(AYAnK^giPWbCU^*3z07K6JMI^r=x?H0pwIq3K*GL<`|yAR*TwmPJwe zEiQ{!wlEc$;v*}-19Dc%UYXRiqPSd8w>T{p(Cr3-Kz4#CWrM0H8x(|=E&Us&krJ2{ z2pJKapkWKTSVlc7F1QoAS$4V<_)<};I0ICtOi;M`iEznYFR_c)wRFZi_i#eXW%~)- zas!V`HPZY6lKB4vtb=`jOLPg&QolX@5e#QHr3f(nF5fQo@@4sRZYwnRwd&`+XS(`z zo-1#2{rb7v(%DM@#b0jBXL}b73AZt{MMnso z9X@<+U9Z+Fs|@Tv8yL(_GTGpt|GA!p`X`YLrZ9+MAyJ@iK&GcRKz(`xS^sBCxxC?% ze$isF{PVPhLcY9gv6L;CvSkAxD6oM=`Db~3dQn^G}z!o$HR#I@w8%DdjFf%egb!)F7`386Wxc)i6uXxJsGIO8zSm^A> z8qM<@PyJ{A{OJX{B<4?6PwStXzQ(Wc8}a`>;@`0j9jUR!2ywY>cAfsreAIp$l+?dh ztYk5EiV3DwkMbo9XryC{f#lZNs3$VU9$9VN6vKR6xzI zpydyvameiO;WJmvYvy<7tMi-rV(SNQh3uS9VAhEcH7Zclf~_^|y|&hYt+lY0ebK3Z z*xFgs-8wZmwQ*{&R^2-L!Bew?Q}>#k9UPp65w82-nx?ipTgTQaHJ!oPdK6jqf7^+J z`)BLO?Ck9KecS9cf$P@$zisfEx1O!jQ`?#ShB{^NoH})Rjk15Xp4pEW=hU;apEOuU zYQ;C~*s=WE-n_1#b57i0sLuZ4x2+m9pqp3Kle*64H?KXqeASz8uGh2tlivKz4eU7v zX8DP$b}WYtHgEptH~*wJ-#oqipWl4Pbggo%Hp<&!Ns>z_YgLG+(1o+J@14&uTvm>& zlvad=HYcs)@LPHTD3RKot)zywGW2Ulmq6@B6N>%>zZG5UkYHGoxpw;KoKJpou5-R# z{q)Q7^?l|`URONxShIR=yz^mu$IT<5a7-!l3W`tOJ<+f7#IWV1iEQZTS1F;c-rM;G zyWUWzgQ+eDp<0OQrlah=kJ9I$92P5^;rDZW9xb*fnb6(qpib-OkO6iTY84{eOU}O( zR3m4)D4MApq^`o+rNGz`X7a=7XVm&Cr$RwnH1&T&Z=a zbEviR25Z(Fz;URCZ0$bq4(~A3y5>OV(2I6%Jn*77Xx(~BYwO0L&UdI$-=VV;HmCue zol~uyt*xy!N@r*1(BKDmZiI2Dwx6NSsrg5zrfxlT%_-ozb!UyJq5Fr9)rM%`an=8* zl3bxX$wkV|^*B2N!|eTKCGE0pbt?Z2fDuZ<4VFphOIw;S!f=AFTfYElX*I3*TX zT@mTfe6IjmM6rgp0=)nzFeM*(j{cINA3M4PtF=Gj^WNYt*o%y5Q|;;Yd9&$rpPc8M zuU0$#veYRrb6)cJz;fqbgU`RWeYSK;nmeYH+Q2U;Hs9k%yg6L%Dz8&yxY*1@(RV-} z0Wa6vJ?HJ^etSC|RCPIEr$eYcLUqsVOZdnREnA%31RFFPtGg3oR*)PE2^gG$_j9DL z)gV>$lYnZFLWT(_v0pxrJg9Pql6gS?UOUC-=6hyJJl9vC_{=bCylN;jLxc^@t<40? z2R0!A4i-R-*2`!ZFB8h~13&B`n}_Z_9PeRy52yFx`92~)kHpWT@*actD109i_juf6 zagV7zUhnaHPbi;2K7sbc;_bixiF!}gd$MDYPk!ua#M3rUE1$N#?lZK{aQJlMy3Z(| zseC5v+0tjG&$@jU_^j=7(LZ}O?b)^GlFv<_Tbp`r`Rwv}>GM&@=aZ{8KfnBv7m$b1 z!{lMwVLiwr;F0vZF?a6#^Z=SbWxu1v&Yk};2VCVUSNXW^IpSx(=4W4R`_Ry*-@qid zZ*Om(3+Hm}bDDka2ijq_4`kjBuI_Fpb>0muut7UGeIJtS>n2h5t!XE)8d*0q55B~{ zW4Y15gDPuvP5$$Q;YB( zSDv-M-V6X-hP7IN=>>ogU$4ScXO}>BVi|Z0msAhR1t+-0X3}$)ILn16For<}n=oAN zpjFi9&zDI|UE8Hi%dtflNVR_+u83tJnu*1k@NO)zd=ry zle5jHaK#}V7H#jTG;om&7L{wh2A8n#Kpo%{NT)pyjNSO#fNWA}ss}(@Pus|9o*hTljI0$|CuZH4^%Co60Bm%)sb{ko8n%epGG)t{ zGjA93v)ftPAL%gC>1dbTuBTm`&QAB8?uT0qyPLgsosHk<<=V!V&E{2O| zpy6`H)o~354F;QT&LGEQW602B_wUf~Jf6oeXV}1dmI$&$Y=U+M}PFsHqjeex56RvA^hlyzBq*i~h%zzF2@ntk`87 zTnAIpgiH_(muCimvMNwgg&3hE>~+7<*du_)1e)4I+=}dC#jYX@nv^p4lz^dEA%5XiK%Mf1S+y`8{nK7v z=w(JOiE{w`Y{LCu*zQlS>zwyn_Z{{29vL*4EKohvDfjJ=_jb*FyXU+e@|>sp4RXEj z-mczGx9b*Iy9wnnKm=F6aSECswc|Q!l2^f8J>2PDF3Z3vCK({=0Kxc+08@ILT~is& zhVaXf;k(_+SXb+t?VWWiShXZCs2AP-;@FN_U}J0{Cd6VKuS)mi(XvCo>yGq8TBc`N zUX|%tOmC6tSxj>)XH{jITLCIqqz&2s$Yd7w=twZbJ-PVZKbZdAWqL1igUeEQ^avg&j zDNb%(_lMPU|K8uL6Rj7mpZa}jhjp!u+(zMhZ|ZIAG>SG3n}qMZPH?KHTGw%kIOWt2 z8UzhJ_0!bPa|2C`ra{xh;+DlDA7YuqoFTN*7bt%BBRTE(lg&ng+mX>9tMosiC+S*|g%hGnhO^-ecD+;F&oyOFVhb>p*} znj1J<7+V~6IPJP_$J5R`oe#R4^gQh`=y|gBNzcL7MlXxAr?=BD=;OF-_CFk??e875 z>FRMCaocq>+)sv#d??S8KlFz@NB)qf#q-e9_(PrpPtUGmp%uXefoxc)-S(VeGmKCY zEQtQ~53+~#oFX#qL+&v%0=N$SCZO`>?6cUQ{!2Yzmpu1* z;RYU+hDZ6_VYb&t?s{udtwVvHCUo6g-RupPM}hmMQSEyN?Jsy;=De;EZ(kAbz$?s- z6zA6PTICdQrS|#GDe!j9eJdC23!InB{dADa?Fx6eL%4Yz%w@?|5h6*ry9c@7SL!DN z*T`@VJOtd)`^bG52PBv9@gdr7FfH8U`JKg1QoJgo0F&+LmL0}+&=$=wb}SuDjJ}%D zu*16jtlo3AZEHrId;!$^`WLwv^j$NIxb!_X8t!MjLszs~EI>pxU)-mf?|7)Gms$Qe9s%u}K{q$0m zc4d?fQ4CHc1gT z$!VIVX?lz1SuD?@B}-Tqk6H4}VmV7%mdbDG^p^4Ycgw^qlio6EmQ4d-*_h^@)@NIL z+nl}2Hs-FpMm8R*J#PQ{IE+vdf}*MDJ#TUU`t4DMB?`|mxRZEw4`%JIh+no%84KW; zFw5B`SdDjjSSYF;tk&qc*U<%r`_l?>)%+j+YA>(K?~gxXv92xz(1OG@aa{er;S*aW z>U9l!`?%nBnfF$Se58kB>e)ZL7HwVPtc%_Go0Ylqw<>WiKIfY2-qu_6bidua?=SYg zor4bUG`^C-6(OR~VvCUCkUa5Oc{P?r7nBJVT0$`o`C$HsNzDGi}aQ5t~p@ZuX&gQ=Otm-b1uZFABT}`oW zw!KsQ;<+`v3tl{T;<;Z#4POUeTU-0Fj@ys_Z5gwD<~ly$2b}Ae zaLCB)Qyh|2le_X7*`)dvq|y7VEx-6nst_ZTgiRTH;LzJOYv9c{P9w!^uH-D_QL|S^1 zS8SCr_1sWqVpX&vQlPYJ`gFQ|ceFt`7UK_VVnVv7|MOAW;r*+2Zy%fdaV)P%B(FxE zg>L&C<>il~yzTQ)mY3HcrD}c_mrvuErjbQGO`WP)XZ6A`kc?gmv_5A zuv#A5@@l5xoX=NU=(d+)Iel(mf9JEm{aH^_Ct;hYl4s$|=XR}f?30dR)l|n^$83#6 zwNy>DWUZiDLTr<<%v^%9da`=>=xSRVSR0RPXy1DFtv|kv#x)pMcWh0&>UQ`dhXGY$09mmP35tf!Z1`Y|meWFStxk}E$)92%V{8OB> z@a2z>9|L=$A!U)vXZ~^1U~ze`{?%JdA6h;d0~!r_9Jj?ZRw-6VtAtfxlXM95dYgnp zu12g^YLt#iebqoCHk)M{j$W0Z*_GDH-)VP)53Bs$Ry5Aex6CkZJHE;$Nz*pG1&5>4 zi-7jZ;}8PT{=hQdl)_z4T=q`ZU0M<7TOO*EBL3n9t=^Je0LfH8h6onthlgRciq0iC zk*+p$*<3lM6k3oJ|7*s3{=%2WE6oi$L_MIhjP_Bl-P}+(mzeaia?Slb?Wo(}^y=NE z>DReSJK+h9tK5Y-1>SbWy?bvPH&HG+J8l;qEi*N4)>8=znqTbcanAlX-eLkogS7!t z(a53NVSRi7T7cx~=zO~!5jeK6-kEyFSF0}2%?h4+$lihO5?}ya?7+r^Z2EeIqqIYN z=x6(re^+_#KPzpt9ISHsk=Jf+OuG)+>Tr3ZnX%Ha)yeWBb<)&MlU6HF^)ffG!l3!! zcc0VBD;v?S$6aN!#b8)n+GoRi=+)e%9sHk6FUgFlK2> zy2-H+eX$OHv5;<@;0=-(%WccHt^QU zz16*rvG!hD*V=0pSd_Q$tn&+ngT0H-_>GH(@ zjmoZ!Sp@sdtyBF0GDM<-O4_C8F?>giP!c>Pp!gi=W<`4(UwS6&0U)a=i1@HoFIIJP znBK{UF&4nV3}=^Maq$R-;tEB}Z)K|+*Kx=)4fzO2VstQo|CEcP$HqOYWv55&W``?; zhbxAM%ZG>maM|f$lgWwm(4}0H`A)O+!i$)tSC?zCa~(yUMyJ!*KTE?JXHo2e2Y;GO zg^SIM7oGA`P9{l5e#O>~hb0#(7E(+Cl%58LvO1JSMrnuoD$&uAf&v|#Z?|J|E>`K; zs*uRkIwJou4~;w;57MfNbpvv2hiuVh#<1A!uRb4w_2`)bc4fo~UNxCZAn z7~8&fUVFo_Pq?PFhHZ7Lb$*u9vntPSdef|?XJ0;cv* z$~&fGvYEzmnkv)SOs~rHb{PlPAx4tjfP0{ScD1YeAJtpE6_)xB5aiM9PVuk(`q3qr zogGRXfe_W$Jrs`NP$*CZuA3{@&AFb2xW;GPe;;FPbz<&c^P^S9P?9m2wjM}Y_oppS zW%X;9k+z15rH?8c3Yc-7nEMRh!%4lz9@t}#-otUd$K&vm_i#+leL@C|9BPjgwT`bM z@?YF6l`FzrOz=q134oX!Mr#exhJi*y&F{khx6sQbKvkdrbuQ|WRo4P#96ScER50mx zY~TXJcAzhc?&t;KsE!$I^yPn?FMkcW?tts|qwTHsRR(eW$snmmy?(dO<$C?K12%_9 zH(qzOvu)S!hHG85Zr!2i;9d8wSMwwIQoU4n?V#@9uB)`)!PXw$=o+ zqwk>Cpw~|O-S@fP+ID@NdHdDvTid^`r*w$cjn1>)(7G=3_PgHZt(!?Z*4?CS_v>v& z+fH^Xx&iZb(+w&CR--^lsMbe7*j+&iUp!)83Qwas!s@bMyM# zI_G&m>zZ5F?>&#TS2sbs&D)`Fvz@(c$-S|S(apIR-L7@h-u1Vxv-yTL>+MY2gj7-!m`TdM%rHUZq$1oYq$Q>@BEZ5wH@twtk=6vZ>yCy ztLM>`_LMg0ee@e^H*CAw>1v1TOIJB*K4@V!vMh0AnUi%|*J}NyTdv(??OJQs99?I) zrn$PizOnAG?Y1j#*ZkNGPFB}lqwU6r?K=;>X5ZJfvQgh%ENpB1|CZaf+3tC?v}>_{ zH(0mX*j;HY>~1a3<1)(G9znz{r}_h2_s7V^@ou7De^(1xe*&I>qp;c>n9yRxi1f6f z+olQ}ml+Z50Pwc_w{g@`F^7)yTC}2*f|<0W~zxjNXOHp%lQ8 zwd)^Chq$oHM$rg{@(IDfFhippSq;f*NJYS$ zxSQ`G1;srU>}$nep#G(NE2yRCFpRErAmNZ7`3Xl+_~G1r%YM+oq8F`?=puIO>Ab}S zeuMz7cdaL{hd4~?%j-w=<6fY9T_5Tn@#hZV9k8{}M*j_WHHZyrc&rR;x~_VnZfIX^ zZ*7mZefkdR^;!%TeP{z~n#@akOPX%9g?;o#k_TOUVftvl`C+n2}O@>6gZ z&#coLXE>zRjU7yNrMgK^VHoNq{d@k>-T88d)xLPw+K#k;vlrcF=ql=(Y7g4}%UyZj zo9BAnhwayNfgZdMI}i?D+Kcze^!fkxqU~3&V1Vx6c?Vu^@O&Q24xG<*UT3<^+qTDc zp?ziTxLuar+s3Uu>TW69>*fu(-q&(l)@8nab$e-hw{}N+Xt(Cwnyy#ft*&?FTVJm$ zZ#UXrx9$;pU3atQ2kx$}EA1q^h4yK6TdvpjdlFmncBwm!bu!)QI@W&2PS|$3U9jD; z{g&%huT$Nvqp&bLqNmTb!=8b}e)rxRGpE+P<`Xm+em5McP5Sx$L@!yNa1^ z!&QX6^&OlR6IT^Ctj+M(2L(#^X)sW){SUeH5zhhDtCvbsrt8zL@*4HW!W z{6sIV2kndUXCKXn^&^LZzFT_k4xwgxZVuRW?N0SkUBDp0lf4aZsxRqJ29QtWwTG%< zs?nG^^&wy3;Q8E^9mv~nK9}VNF56CAd8aEJvaH8aZ|=UHmpAIey$x47x8+=D``z09 z*E9F;Ex*h`*S$pXEC7uCmcq*=oMtbT9rjUy3i)v#w9= zPxGSwinDO3>r$`aZGP*%*Xv8y7u$Ef-d)UnuIqfBwF9Y_*qhp$w=1?i_m%dV+f(|m zThG_6?q71oIxqVM2GqMdcX8JU^Okpg-g=j)?m)l1l1=F$0xFMCnJN%g$)o<{W_w8R zGgTFQkw6{+*@#%!#(}y%dq{KU898Yk(|0Ux?k62<<@gElGJ-o8I2pnt!ETf@&TdI&gLPT|9*TQ9D^>>GjqD4XpZE9o zoxgKOhYCFz_95N)?r_MDd=L4?S9&N9-yuJIr^i0bd%uT&#~r~PcZ9d^BOmd9_lW*? zNA$m4_)q`Z{_?K|->}iwUGfWV`8p_#fX2YX9=lz4-J1LIQ$2S2?6{oqSPg(!Tt6TU0!_;B$f9=krwja04Y9HwXgb101pQdoa z<9^(kx`gNF-}RC1E|kfe@V|o9_jA>!70~?pe(VEyQGKcjzK!eav2#3A1BAPpFm*z( zP#g+%aZ`(*U*6PVw6`&|c3AB>d)GZX_j(@nJh|S|FWj3ufcK^bUe}Afau2$X{?Xr} z`*MSqb*nelZQfKL-dV;3-KUxKRE945T+i-N`_K2N?`hC-ZgqPtJ(nGKU6%FZJ?9gd z^e11T=dvDkhtwT3xBqpW+xA`V?+&8eJBn)qDHL{^NhlcV2Q#-z4C6ID|)jF)jHJZu}1Mk?$ei_==K6+O!=G`<`3q&%5xS z*W%Bu@+U3-RGVLG^Ghv%SF7K2iO;a=J6PjwtogQC^X;?#8(HrSuKgxAf6@Ovp7OWP zmQND2CbTD1H0~>pB2vXLlq6CFs)VYE0Fg?RhNTTfzW%8_ZSJFvUSf3E{zHDFG zfz-1bGOydR-})cxJ`a;5EO=97}ax=6k2 zdedIdDHt<#y39$lb?1CNPvtVl?3Tc6+AOUi%kWz&Thud#VI~52kPay+{jSr62uUFY z>_TKDRS->G`YYL7CR@rH>`6j)T&O0D9FFvBk9KDERj#EE0Iasgeh>W6^LaR}8H8qF zU=qM*c_s25W4+O=l4LW(agxQ@?R2El!<;>_07?J8d&DJqI(px3N7O^?OZ+#o|x&h=TZLg=lGLW|B*F+ z$o1Fx0rkF5gRfBkYt;X?%|2qs7t{4c>HgyB@#5L~Mbqb5)8}b8KO5&~;XWDMCAEaL z{QGbwLZC1tf+9o;WRVJ}FdW<|Rk+g#5XG2+p`X-`*PHYd-evK=a=Wa!E_-&qTwOeO z!jB)O;ZqclGxOePhkhY;L!5<`Z`+Ax+Ze4jl{_%-)4_0zmdS9CD< zoc+l{;8Q3i-(5<$8s0JwWMOj-G^==4=7h{*T|z=$02XuP;?aC|q~?J> z&-=-|gUrm?vqObaO3&Sq8Y##0@jretxrMBm6)Fiu9@A7ni9d~x_?G%LTvvxQ?`{_N zOVjFL?nHJ;#uW%Sn4PoZIEr8lg{J^f*o_yQ6LQ|w*Do)`LI{PF zU{Q1%O}2^Tqn`Lxm;0`SA3`L!K+!RftVocpcd>Tvds+WVv~@m!<@Uh$iDh_Q9cIus zOeOUM7OCRsd!lgRi7ZsmL>uDm#?NfFK`A}N=^h%|wDN3LdNwUTbLI>oTnBgK_kKRl z!Qc3v@F6_%dxS%I@ONnUeGl`lJM??*Js$R*d)Rl~;oNzLeditS?Z2b=(|`6q`K$4l zUG$4C@p+g2T$cN6ntvi~K9n{e%!=>%Zuyemz$fbVxOhB%JRbLa9{2nnGXW_9nSero zhol_nKm`XP1F}dFz$hUKL;{f5A62Eodj^G6F$4s13j?^m)Ti=kLZzqR!uAzCsgr^c zvS7vzbl&nADJMZu!v!`LflQ+!B*@=Wgc89B&u4FPJVc=alYip{Kh2(<-ikkUUw_1- zb|~uyg291IROU`$f&jrtAxg5RcrHIwG*0BkbK{uF-{1h#T$H7jic~`^fD6>| zT3X0kZ;^m~x_ctVECP3OqLs5WTH*?}jbd6p7KJl55AbMc0osk+Y*&r`4Ui?Xbb@+$ z9(wdeHtKLn=hH~dB$b%!VsInnXgCjJ14UH2myef?kJ>|BJ)u(~U-&fLH`3Ah%7|5Z z`j{T9;h}LsLHD=${Zsub0n1fDf%aqMc_R#HK_|SX69wteP2S{94sBMtwxysz2c z-ivm30o<7v6vTbV0P3Vrfh=G|6hf%x!5|foK#H765zqwfrGmo+3Be*Tk+y&;QkX!& z6FoZ*YM+j~8YumfeOCH)hf0~KWVl8E6Ocdv3*P`qaxpV!hM*TD;&ZuKsE|zt@xjVF z;@hBWw`#ac_w|^9$#g)5v-nyJj({uzzR~HzleoKC=|&PLC2{yO`OJyB1={pC zn||L1+g)iEvp6%5WCpSK9!C~u@UMu>LBo;hH+7@J0ybzWUZB$%jd5{&{xyUV6aUxj z0AVQLn}j9`%brzy37HAHLZfaLlgqpysw4$eoz+o4u0T#uOdcZ69$SA?T!DN0{|g9D z;7`$~*w@Ch0$G>(e4kX#{}p3?Pd<{E;CxbuX(r{VjBe#rBjGw8mMjEeH1;PHY41E^ zHhH$)G}hJ=Ktop88~J>&2|C*bSx^(k;6OH3B929}R3cC+3z`tl^y}{{Ax<_>m-DSs zgqw~wNt2VeO`E6!gDk(>H#R!I?Ev_n+vET@iS+2zp*A!$banol975{#UhnlLuWqx_ zbFUZ*!ga5kmhV-YRG!WM-m4C9b#pH6;x2C0v)j1(Y+QRcuD+X8pUukm@4EK;`|G-Y zU-$lf?SXvwd62LF9_fW1^*JB?X&&P#AM4Tc_;!6hkxjp=zxB^8UXv|flZ{`?`mbk$ z*Rj!S>F{#;JpHdBkNF0igq)%5q3&~rQi{L^r$zLDf@maKN#YDwAV?r!sbCQqfk6^@ zcF*o{XNG|V3--i`YKdsMI~|wF9B)>P)NG>}fpE_9PRW1@L?X0|fTATDL?9Ll1?Z(x zBvj$1K>mcOukNS$)&`L}ouAZ8c(W;xV0c3yK+HlR2(u|nvQ{e+k>P?F=mU%Zl~I7j zGKs=qmR5Hyo~#>pDCn!f_9@b4l=S|rs^wQe3jq{DLWn3Xpt*=)-%!F) zG2iW%ixh)^P)_?w=IlVl+I+NeikWEZ37{s8G9&1BJHIduu%U)RV;&1Dfxx6f`wf}A zJjGxEi~LPUvf$ZG$NG>k`*K`a>S}$p$U5Csu|q@tp_`m)8@jryn=@z5y&{ErubY;i zi$e%jUEQXYXU?39TeS+IKyA*@(9pf!>&30w{O@ydLv#E^MF$vq0N+0!^vnMq@rAF) zvA4&!(vYzI^7}Oh%I+`A16v(xsS?`AX;NSCeDq*Dv7y5ELK87P&x&WKoN$@xxd6m34>X8 z5TM>ws3>QLiy~COiqu4CFrspJOLSvo%Lqk-i^XF&P$g73qLZVM{QKZW9z`GnpBBGn zC@79gkB1;>vOGTCgn^vO(?5L(6G^9_DJUBp4o*KB6hSads06BTI5U|jJ?$dNMG?f?$aN#;^jZ^bKHTQ>ZFRhaYxRkQtK@(_spe@O!v-;9EVP2^SML zQ7ghwsv04A1DFcKU`)$qo6_QwvFSn()fQl)vO9e;?BwL+J!wC-m-xS?mh!oLk?@C2 zpJqa}KqD?y__g>K^tDV+_vxmkarw#IokU!LD)k`8;kV~=8+kZIVl%W=9u@C}WKFBZ zsnYl8u*hsc)w`GC2dn`#pMb^L#G1J)5AcvUo)ci~kudnB>7mhcSl!(e3caF(v!@-- zk~d9N)y*Np1O~9pD=_<8j)G-mIPJkM(o+ zgj`QEE+{Q1EiD*UinZ%aULDe{Hwjeg9Hd}Z%>g&KxK(p-|0+tmxK;Q1Wgv=cU-e}! z?f?(q+w(v_UJvr!c~Ec9=X|yg`ptPTug`aSM3?@1G{^s*~$G?>0TGkU? z-IHG43CueuIpyb>n>O7-6&$!Mrp(B>I$!f#eJXy_Ho6Kt5^R+u4KW?WE zQ6CM4Ys?T#2sqK25e=~nSBjx1H9|2lbrTDX`~vL0nM@|1B4nk-hiis|B;>asN{vQF zun3h|1#+U1-$D=^7?hSxGgrvws;EGlmF3&~IN+sw9z6 z0;5>j_rWmiv6=q4iha-fn|D4DDvFwtA9TY1;!g?&doq<_1>XlVQ5h`-A%TCcMcJqn z6KPFYq-6SZ7&C!b!A>HsK$Uus-9+d(v8sEt=R3n&Firm8QSsgc)s1b+rXB=NWAFzb zg{8s>q>;xN-lLcNdH1~>9*GW6DD_PaZ3IFcEB}~0pZBuuqv@$xN|R9ED+}UB0L`h$BD#G|CKZ(kAEfp4<`^j>%OyNVcA_^)uOe z>z#oD<(yUbimvy&E^gJ;%~^#2tokun-OhoU7QtF|D71H|jcV`4)o0_{v&$|U)t>wJ z{r7=<_6_XYMDs@j0Hkdt%c)scD|vv^mA8 zb7~Vgt?{1DIL>U~yN5o{xYo&R#L|SVaWWem+r)%Mvy#@NJ@-f4gUyYv?VsdKitN1e z&P30ROmVhynx{l2M{!6>1$Rn;D0t6zHLPdCjKIdwo}rykDH%`&3J{Tnv94qn9{~knDT<*}Oem^NGqEKK1q8wb z41(BWGodNyJ+n>Pok(1PjQt=No@1zFZP{gh{?*N=;=PZ9x(5i1diRp{iyDf_?Wjek z=urzzaX`=>Q`7_W4EA8D+N*36c3U3^SHA(-yaGvI7t8QLhQp>!WsmUIqPK{;iQ#ny z68g6-14HYc@>3a2$q(otc!AERq!2+gVAAMbV}DJB*H&Uv$3v2f6pxU(TqK_(8z~0X z1F57g3FZyah7hMid$n~BvmRtFYbPha*|5^9fPG)m#-0>|o-sjL;gCa0E-QGn;L_sG zF_D@|W-x@qkwlAut39>{P%m7J_Q%TA78#ja!n|TibtFK~p2;&g(y(pk%vlAjOG-Nw z+I|@f;LCiOL+!G0^}b*AcbC~4)t`;(@7LO>`fU39dQXr1!amM@KHfb%zTNW#ckqO^ z`$V^RyvyDbTJU`mbMDg{K4&;=&UomY>5z{zA2hog!0!9IyT0wU;~7;nE;&A$nRrSL zM}GZn+3v3#Ol}nc|L@AH^@HX(C31aFu-_SfJr;Su>dfG6}@taAad;unLMqUQX?ZEqJS{NkU*K3S}9S0mFeu7b#iyen z3nB!NLNit`A<9rxG*gSJU>HeEs^AC&kqrzK5Cj1g6)EP4(D(rEtNUqxG63-v&<8mF zu@#k<2SF^=ZxN_KOu!L}(mxcXmz@DJPM1ozZFJIzu}hg6aGIkp|Rrt#X`V=z=4W|6oY^~I)<4g8h?`^*o_jaUhaCDJH<^^lzJ{J zs26VGHptH#IE9ITO-d%IIGkV+YVu5tW)RVeDA^(p8{~~I!`+EZ+Em4SI9N|j$u5A1 zsz|vCD%wLK`CVUT&c)4{v-#iW$N0DSb8qqIy8qvw-}&&a{QubYejoo5PH@Sb(9${4 zMRSt#IO*A(>?}@h>YT(ZPG_)Z(cRs30ItCD_J@vTFUEp>u}5BRyku=J9RGan9&*UsOE}< z7*!CZnF>_VO363?*@kUea6ALY@ySXKka;d76JYZwFl!2{fSU!XB-0B3lGF2L640bV zK|&!uDjg*Lxv79fAUK1k&QRjY44D!ymkA(+L_$D%Nf6`F6QFXR=Diz(nK-gQRU%px z;>ez-8Qqe@VB{nvAy5&mYnqtI;Q$>|LM1he#TmE;*W{FsnJYmELP}Ce04zud5f-FT z1PsNr+P{`xB*SsMyj%l8b0GyJ$yXp_Pair}Hb@fqA~KMRR1%~}iQ`FPQ!qR&rY;PM zBogGkj}RbGBxiEv$*6WboPYc|N|{)oFcT1hK(L?)k%01@NL+!8{UGo9y|g(Qmb_TG zPaHlK@9pUhz6W815y+l^AF@4#Mq#jr#~Z5KMu8d0c1Hw~cwT`kmr7*Fb70?;#;wvx zU@iTq)?v3XBu3l&s%$NzL-EZpTW>arK1bk7=qS}Mvq#D2QIpT?U1udIT(~GBj{gJ`W2r+N#h6~eX-A;*PvV)p9*=EuZkZAtm_7H)^BG^{5~U?IgO6pH{3C5H~p z2QoDhBO9dGpssFA(o<#R9=UE@+{BUAdnViNyzRC#)&p(T=6^pQz}NSIzq=pgo9jWp zIuGvUK7{A{5TBoi^z1zJ8$OKN*JIuFb0RbLB&K)@ljc+>{yWX_bJ}A#{gIsE2+v~R z*+buZAKgwy>wLe=w#jN4Tl3f($KHgkk*r3n$$L2FG2PiPi&|;QDn9-}Ri5X!D+R5Y zSCUBY7=<0n9mjpQ`v{FOv!H{ZH}yLYV)aVUWz;3OSd1t*9K8UTUonA_ zas#iVgl91D7`eH4u7*JO`IrK^I{9?=H2}LebYw;zE>Y+wmoU_7T+L9I@OUNVVg(VY zBI2TGL|*V%Q9i;G#Sod&$ZLzNsvEYs%;9^3a31&{$;uc{9SmQ{fqGWYDjr{cX04#Tk#Mi_x?>H&Jg zk%gxC(XeE73t*$&tSEWYln;cMIVi$S#k!U0_``4hASDC|;44Gf5auTvbzGg4>f zjX~)RB>8%#RFDLoVdT=OR62(odmyx-L5@G21`|<(#^IilHLSFol-`@t?y;FNaNaye z|D4eNQQlrQRLUujjy0128VMSWW{|Ih2(?G37Eu5;Z4!2}HQkz(4jWc_sZQ&%&@0ar zw+f?m36<1&Q--n;3}q5JZyN9t!r^tJyq55LZ==AgL3YRa* zj)}(h{{qmLrC;Hc^IiM7+a!105wUO}2YZjzb`_m2AqQ)5+0s#vqgFI z24as5!@>ns(O8XAmVwCfBQ;W$8CHnJNn?~_^$>=lcPiS6#1+We5AqL9(YfSNSReRQ zyf<0XvPx37PozahC#S*)#(v)ojX?ZHcld(_0-ki&(NWKd*AU3}P zy8#-2fvloXcQk zoiYkJc-{d+yBdeip=rpaSl%vY6@9F*(|*hrtHFO}0-80Cu+D5cplc4L!`sEK(>062%mx(s20`g~S7C55E#65@9=_L~#YYk}ZBPxQ7&`DhsW*^u|{u*!n4 z=EKv5cLnL!dVA@{Uc0l8?jKuroi{V4qvP9aY3a5dIoXMv#H2)vDCP>oY;3${&H^(L zmo4qmSr%Se+MI-nvw5q;F`9X{q%4(1EpkVTioTY;yW_NXG8TbC=GF+wtF;qnmhycXcpk!`F63dK16#@*!qy!S)Le(fV zhze4H0#K?~0Q6V{O2`;M`?u{eFmOC4HzPH1aw4RHKv)GsND-XHObBL9Bt*yq^}~f6 zgMro|W#s1OPEJLT%F29XE^W#87zl!fw^TyN7@U#I$i*3WZjKsH2*MFUnOPyjbMagNjB<^D1%b2@AgD;MAP53Au~8INDUN?95?3H|Kges{qwBy2 zJ{9kU@j92nz@rOZa!o=}VFa>YZaoA)3-cuB8`{UqH9a*pZ@3>IX%uGE3&Q1&8Vbj* ze;9=oSD@s;v^6HYrDz(pc8kn?HL-10rmPNPW-`z`Hjpe*Yz~jx=sR)B&?d4$Lz#kB zG+H_H?`;{UkWI-*$t?9mj#8pEav@d7r;UQtpp*^o71C*Ozno;+To}}a+lFks5FObL zWQ+s5p2@Inw|*wuZl)@>4jVS3RDILdn++>ClY(agfLvCFKJ(3$84YXYF{q@TF{1=v zB++Jm9!lvEZsSs}VZ*x$+rk21w*`p6GR;RnzYb_)!3GRt@P_GF-|%D>0yYFD0fpfd zZUpeVP>LnB@whAJ$u|$${BO9oe~*^@d${ahgBAY%Sm7^kslNtG{_QRO*I?O;!zJd& z%SDGPM+RC;i%LX(ir@)RFEl{-=H_OSBxmi ztrm`GDvCa!NDh1~;kYS+F(ca;vJE^Qtyf*bFsO5IrBa!is!UZ@h$9i!JdjYaz)zBh z(|G5Yvt|%7nNo?!it_V|kRql2_z5Xckx7f9kiG(V8EG#jgE2W;5hG%OAU|Iw9;4Uq zeC#zwH$mXk1c)n8d{!X0#>89RJ$pMNvwoa^hYh`>C>{qar_yy^MmvqON*OhalrO2dYOvTpKVE@i6PEhwP!6f~QpMDbcE7)Dxl-JmEf z(~^`eq*0UVbEti~owrs~@<7sU0d#bMW9kgMFeN{GCj4# zc59cm4joz8Bt@1P#C&(~qaC-7owkhJlZL4G*M6s1panH06K;5;+}y%kHd31n)ErcK z8}SK;q1x#7s_)~|JmH7hXXIn>_xpZZeW)*eX`Sc13F;-TeEkO<>NFUh8=j#|QYL9C^byK?7A0%b z;`!I{Ta@&wsaD6N4{w zQYOYMoT=rfVfsWsq-mW|n$L6R#w<*LxB|rod0F6REFYd`pt{8^QL`Cn* zw7PTZgF9%wx!#aYU=}styAp6LHIOJ?M2H2ngM zhF~{vwMQ#G#%W+Rk~26@ygzAlqu=0;um~U@`BGreQFLZ$GoMTnp6I&H z8tbd8J9k_#-tk}HhaTT^@oc z8HQN6WgE8XF=!z0o=L>3)1{CBGmcLJR3NzyV1_$VMG!Hrj=}BN4QhJexIliVC{>Va z(FjD6k0ez>3V>dD4xO(vJI{~Fd?cBJkLKXR z*@b9cDzMraRNOLQygi{l@xxIVh0^)?R1#)xtkD1y&Tf1Zi%@!$$0BM)l{5L1d(qFM z%Y~0F5pS!mb6$tgu-?cbG+zO?Q{v`W2nusI+K7o19qVh*XaWuRUU7w(*#FsnX0&?O zxxp(~{lJ$Eu-auG_`s!;MYG5Tofi1fMu#00_OqPxmgsxVu+n%u>MXh276Mv;=Si{@ z58(+(>U3O*6b@LWHv@8{G})Xi#gIw~>c!C>pJ`>m z4CPHp#9*Llb2blPMmM|#n#yDF)Qrh8kj*xk1mP-(&R~LxjBJ{7Gn+OwlL+6pR{LZk zpjMP7n~aOY754sApl~{dngGD%<3<4k9T*Iy3gCrd!kZET<(A7X@A6b8Him&WMSv!B zq7QTvACg}=QfFHofZEUh`P=J^yW$w^7)s7?gaZ>23Fng_W;0BW--5>?``fhv2=W+= zU7{vFG33^m3@k7u*E--G%o!MYm!?M!g53IQViw3<&W4=Qhszu@@{*OFl*k4GjkJ*( z9CAu>Exr^%T-)hmLg`G(K~f%&i@P{209in$zdbqDvGg>=bK{KsX`Xc7sP1iEvs*us zZ~HI(hL1Maezf|NwE81h;=;IPDC5}~nMPGwDy8!Q{48dBgxaGNi*;D{!&rSP`IV}2 z;DJ|Lz4=%fTr5XxHh#ZKKlAAr*hm%T7v8W&)9bp?MHt(EXcro*)YR9!3;fjha<(x2No$-nyT}Tu^orCMuK<@pX7NS&%lAQB&0M+@Er*e zWNDGa%*dpNuQLKkQaV{Ac{Ux%Fjr21XJ7dG>l1QUn@)H__(^WhL?XF0X+AeSh~%Et z$h5#KaL5=*^ZK3HcuU+ zCS0k{57(eldAvLxB`PM<8nR3Dm{svvf!rFCcizY(cu^Ks-lZ+466Drb6QlPEKtr2O z7g|!Hv0z?uJsUK{QfFF)3VC7wU9)55ikTz0qWq@Zh(urkVyX zIULE#PJz79Xz~X#2`FR`F!W8%$OFL3h7d&Q>7T`>{0DsJ+RqGE42|y8(xK6-_#!Xh z-aeqNbKXswCTr?M#HJvRj7$-G;#O{HyYgpgZ9O_qRP>#CYH4#RX~x@Tp0K7CmL1Mt z`tKvcjzJeW%DRhpTagVA`rIf>E|gc3NtNfZt`jlKhF4Vv503^>;v-JgT>#UJSLDiQ z-byu1gbg$XG-?Jw$}7tC-{)66%>Xi#q>AZ<2P;gV0(}MG3t$*{1_r&b#jcpNK3~O4 zHpP9KZ*MeG08*~T84RGYvFS6eFS~|&zh^O{gl8yWBtB2B(fDS+{Rg=q;pyixXk%i- zs3wMv9cV>~!N5z@OCQr!^NmL1#DaXBK?j~8r{eCOZcKSM!~i~x+6)x@w-(v>4^ zv|sQAgol0{I)g>4KiNoPIxRIe(*WYtuo$xxH@;~KxqyAgjw|oIj_h~ra9m~g)y&?u z=V;p>eU*>?(dTN}3)I}Te18A!P2afNI^p(?$@p~0`*0xmU?6(Wi+h1oe~h&FA4&Uf zu+-(jYi@t}-}~%5@2wK?UO|_Lw~q@SU7{cRnD@HO4OZ_O_TJo+e{(n4bt|lcC&y3uR5oRLxWhrB%uOO$IBQPx0cAO7Bsm8;!-Mucky-8{955PCWe? zV8IX$H5%pRXchuG)@-EmHv+E6jPsQcty*$h+i9$D>hpD&ky8whUs$iS|U2B;uf$BrPrV+#`oD#%&)%1_za?|9syS5EYr%>+T*(|^;T&y_$DZDWChtX~t9O#{INM*^ zhk6BFW(Qqo2Vbk}toI7O(&?Z6>A!*=DN;#tFONH+H1eLwN(PpVRBTz zbr~XS3Z?Tk6dHkleCME?kp#Pes}8O72#I=3xJEHRu(66^il&qC z)Y#n1PDR#aJG!n1@NAvnH%S#KOS;)n-Kr4>UL8+gvdb$^mMTkF4t2LR}k{ljwP8g8B7>-LimnU%V zOaO)&iB@hjroZ?=s&6%zSs>C%^C#2xnQYTT*A(8kmmFL!;=r-aQRzShAE5LWD-!`_A3Y9T1IPr#-B;pOvvi&L8@k3HuI7((wX7DhvG$K` z@#neUzwc|iw)^|@zL$^lKt4SW;@$I5?_X>EcsB4X8-ALzZv2s(c<83?cWal0d~2l<-_5atczf?{WI;sUNoDm@z--dL~CHUA$WDOZKRf zlhqX!#|cL&PKpb;l6K1}Q84#DI1S2=%#oAujK+)q`;FtK{EGCoxmEaIgKcA61HYe< z&m{=H1nYhbyVc}0SA8<70_GrtV~Dtoi6P>Sj9Y-tOD-QB)LNpAJxzM9jz2-jPcY(Q zFZQ#C40*fg=+5x9fC(wQ{WVvR+{fR2%oSV%%rXPKh_&em#Q{>c^#b4R?Qi(?C;a+W%nA3T6v%IHKUDf(J_M&n6WCs6KkGqhhWgU zX;xl#2D_8}th7qbBJborXDp0_HCEdv0R}2(tfp}oNKKYD<1M-bVcWDut(ddW$d2b+ z%@}%6*F}sDTB0Cx*^FeU+p>|J^`%4)wzZjNV>&h8d(P+Fo^l1rQnsf@g~lv`iOouE zv|{sh>CQX%>>Lz~^`Xd)^E*R{o9)5$YqFZ>mztgk*OS*go?or&Jv}{bjbXdIiuvB^ z>T2)ncl9h?s$-N$TW_}=(!$M@P&ny99|twlwSIoY{~ET5AFji8*EJSyUrmg`wT~Zv z?L_vp1nvOZq^8AzDuJ^#8UU|Z9oeMi$~3e*xdrN?oVRJoD&xl02ewsP{CT(d^LhWj zeLk@F*8_idJ;=A$gL-p4=-1bSd37GltLtIhxgXKR_t71@9?O9q`#vAno*v)M9{-M> zz>bb<)qSFKpVRAk9bx9}o14%aQ6sOI49`Q9nA2ZIn4GUre@DCuV~@{+VD>mZJ`85n zuE!BeUFtMxIoXFeZu0ABI?H`cVKqz;`NY1FauS@;50{R;OC<*B>D?Ws(7MDMiH<&% zb9d5`%B`c40vR~krHKoEEg5$d%!!elyX?HIiYh9$WGid>P2V(+pHW8Z)pt^Zk?k{A)E^UwYyWt`B_Rie+!jO&^=ih6&v0GMACsuyTdN za(J>dNLWnH7V%33Naq42Ed~fSHOW$zHO=)66+6ziCBt%kSSNtx7huVt{<7OH(4B}} z#iftsTIH`~v8yh?>nzb5Z=ibN!o#m|IGWZd2T9AI4gxzW7^*e{cPEZ`t7P@k7B-jT zV43PFZmYU4b`Nd!vRv6SsL5O`ausjUrLr(Q#FsYn*v=)ZMZ&T(^B|HzT(PW-PAK>!j z*+C=KIb%b0r-gc?%C@j9Yi%Y$FxAz0;cN!?*am*IA{!>CzMAwMpe~|-D>1baYly6= zY^l_tf;ESufuOp>0SY=m)^r1|@k$Reudz32>f@ZPYk}IV?iZ`BcJ7uXokUmOyD^}> z(*Ap;{RiW(@qj+R58=sqNRQ4#y?-9Yz4Ned@58xu9`4P3q?fKod+L4k$KS`h?dy0K zdVGsI;rX7}Tu)+lCpoK=n7OAk@|>uCK4h z2q~F9 zDgww!AQkqdqC>f;A0z8E$4!7iSL;;3a`I}O%Be*ATv>zdUNvQ3NkzaM1Wy8i1Tto! zR;fDUIYLYIZDBT+>Q!8m+@OvIm#5i9s4kJTE`r&x`%Wsy)SViQg$ z%AKp+xyNLQ%9jGF4<#D}Ytv-%JoqFD@WdSGY+s0$LW)#e_ZT!R_XN!rb}7%pU^Wk! zJ4rBs=lN0ul#Ru&B9lgr9FrU_*I&|KV(2=n>n$n20@eysle^9f6rKG%Y@&TvnENM|&#Ga10{dbg(@XHVU)E!!@OV~O5?QvMAN`T4S}9F%am zmMqC(OUhhJYE&z#S6oqz*z=)%>SUi3mbFSOqZRW?82P?if=2AK%reD4-}oy8pX?;tf7O)%^g&zPwVTd{hBj0}Z**`gSM$L=S zy_lM6`sLdVvB}N&YC1f!i<)w~pwZ*T8Vm0>0Q>HVm!rKW8)4) z&CQ4KyYOTel~;3fkjzyB6a|c#)vTH5s>{T#SUEPdZd`B-b^^+@GR>5t`3R1^5MbRx zfUuDO0U@8D<6p(;)vqW;*2oravYHB=-I5(Ga zrs^0i+tJ!IQzsZDp13E$^qQi7@wg-_Io%THPS?a4rlX_FFoOrxwBR7V2C#2+S@tj- zi`6wkNqS03q<+p_A6^u%Nu}biKV09|)}|fQBw`X>4j8M@F#rgae4E5MIZjGw{p+31 znKL^&+{QtJ)6*iPzM7c8kZw6k_ioYYTClN|n#!y!)HfM6O3vzVXtGg5DP&aRFcy3D zpk^-}c${sJThWLAeXpk4xmp(%YPpJ@J6p$@z3t4|dgf``^ER&e8rJ;vYySHEr`GuG zuJi5P)Xlxw>vvnH+`(~obkv<5a_0xx)js#Qqx)R<9HQh|sE9?1=v6TN@(7L)5^+Gz zu`N5Hq02tCenZP?a6E;@NZCvOz$jXGUNsX}O8Zp6h-j0Xo*$!6pr1qDb6KxY7znrx}h zlEKJhd{gu{B|XQPfWf90ikUU%3yRG@%jn~v+#09aeV_B_M^GnCFnn9zZ zLn7S6PDD{0#8z*2T_i3gWLejVKE+W*IAFKk)LX<*Up8AWNz68hWyEja+)NU|R!u^V2@AEe(w6Sv%gZcQt?Z z`d+x9r>^Tw*8Mi?d7bsX%KBbrBaiM@Elv3GRn>~5QT+`?WqvyTn#Yn}U9%R!f{ z1xwbki@I>p4$e+QW}?y)n=~%L4Spt3%p1L>TXN0Bcph$LYv*0JE4_p|y)JL}2sCZ@ z1eP`{k}HxiCNQ$oDtyB}%5;ofZ)6#fPuJA0siU=ViU5{{Gr>w<>+NOUPknM4awdKo zNkfvm2485a^^y?L87e&HWMo8UD2gZ>^5r8Qa|hB17wio4UBr+bA(>#NvW~jYd4{pM3X-X?@bw zN7J!(NUOj@_0OiJ+|v5M4pBgM%vfqHE4DZxcoeI%1kWUKeN=3VB4kE)UGIM?VK`^K zfy39lCIC&t8V*2XO$msL(E6phcq-+8CU;VM&fY>#f7lEz z)p3zR;F;uce>0$nHv{fal3=7Z6+dz$l~TfPse~)zz!r>NpnE4!L)>@=!_lmZEZbc@E zP7oKLWsEK+K^j(InwS+B9;%o8*s)_>E{c6=2!bg9Gt%@GMH4hF&^U^m40KKG(xn{F zN_itjjIb8ZoIKGv&FReS>gt+2F=b*`F<*fVi}C!D4{r2HdD*D01FeoFHUCm)L5+od z2}|tTeWm3>SSjq~?p?(cR+ye`PdPU_F8bVs9WTKVhj>AVM><|csg`z0?LFkexP_5O zS^hKiCUCV38w6{QgrohNa%fH@N~U@B4_T$q<a*&`oJCA4X>fFE-A5~RvaV{uQzz0f^ zZq<4GA?uk;+HmPVW*qfiam5QA7nYOdutpO~2$>=x=ICI;IHid}*;(`H0UQ?-)rt6OZQQxar7x1dlCyzbdm8a zR&1YWgK|44lBgsx31VaZ8N~|pZ6)Daa{=#blQ-$Gl<&9WoMBXh;S685vXk2Dt za$c8n@<&ON@B|=3Tyj^TtDaP?ov|EbWM{upWM?@Ermqn37#S+5D6{(WFj+K&=&qCB zMyc!|hXmQg=3MIbFPId_2Qe}ONdt~(GO`r{h>@^NY>+SMiI2-bFPJ7Zd7j^hUDy@3 z)-+m$XQ%bV(V_yEM+aIM0zjvtEpEDwpvbl3xD5@@<|qEyy~F1-!)u`_MPpwoc2bgn z$ODHZxy2R&*^Jb?1jvPorj&3<&f|%(m;fCPjRVa5h>pNaK(Jw{rUAD01KOnyMU9C9DB1GntLVA2b=-Lx&)iM-xh_z> zR{f`|`Mtixvsu^Mv*}xBt7o4b?mxTR;@&r~?=|jkr3YBSftGoQ${eO-EmAnWqSI&0 ze62?c8zo|d$c#~GW0J`;%vP__b$#e_h6 z;0832m0fJpZ+lvRi6D@0Ll_v;7gQip8B zMr_2N3B7%6@C&_(?}hj{#8FQt+%K`UP9}`XKJ1(Wy5i+zL@ESv$)#g&xi>w@Zgs>- z$#K#13b|rEf7#Iv)kpT<&(=Sih(25)kVdQ7RBeM7>22dGj0SH zn58;PL~*iDZk!zm29cWvVaUw~_!V({mp%l|<1M!Y{IM;{hEdE`#o_c9`+>8XjY zS7IKgGtQK?4HBXb;@UDvz7+KUW;h`2V3zo5f^W&PbeLQ2T+4W}S?zS8%oKhw85@jl z!q1?BS=miM-QAVrb={io4jt^w3{Y0r;^@(2YaF;qZnHEf0b0`m<0Tp}4{i@eS@=p2 zaNa?>HGL%m_vwCvkNGh_=B%A}u9o-Q&0lN!{H*_3H~1tQeUwey&!+BXGk4tb)wP4; zXOA1!?zTP$teOK?a>#NPEafF1VV*~unS~~G@xu1cWk7Z!)AP-KqafzL5sCNqjh8Ws zrPx)NObQdHP~4~@UN$w+3}R~pBX9}sr&5nmCyxP&C18lNl#R<3>+&r2EM8m}YDY=? zdr>bj)LEE{_6=u>G%I<0>SVPK2n_1yD$;xqS$!2i_KJ!Mj4INShjmSxwt@$Uq$apD z?p3;W4RUGo(Mltx`bK7SR^d^}52IuvSV=)?#g~hF`R%WdLpS)|?(L-S?O6xB;|Bl9 zXC1L!ZZ0<*A23mn4?%WcXm`X<>@JiJV;Ob8uuS2Dj%j~46(2acw6tqGPRcb%|r>|uSB~6msuw4r0>6E=m`QR)3O<;_w zu%9Q`i5a$w8m5(DoGEA6sF#D7{uum~^;~T<%j@tcG&Ei@pK%8jMyi1ulr^}T8fMpJ zHKCM^!~{*#+SnbCsGtQ19vh%sE`XX!fU8stI}u#xG3^eM%2JWgdNwztg+=PAUw46&^akgi2nc^~(2AC(wuT6Fh;w91YwIOADX2f|aGL(|frL%m%z zsPIkGk(Gss)R2|c11jJg4G!4085IDN4YpT2cu#aiLl@%{&EEcA%g1MPm$UWLZu6Ae zKh91Lv*W{V_egfRYwdN@-pBfVu!{Yxjy#>CPv_W^=aVfufnG)Si)O%xq5m44oR~O* zkY7$d4>ItKO~{I zkL}v7F59)Y&-G0(V;KBHCqAu}-}IM;{Xmyv&@R0!jEswx&YK4Nwf~g>fUe3+%7?@> zUFog4)imtw=uL%Loz-6|E0lLz*zkfQTd>22KfIlCiV~AC_^E>R`HEx81u7R9t?P~V z*0@sM zYGwWX9By~3qpMJsVgY%8P;DbsJY6V~$=Fz3du4Y|H?*eFY6e;`5yoqDnr?>!miB5u ze7Mq~abzPGA~2y*c2nh zeEYSzD}Q#si9K$ZeXeCct2y8@4z!GeF82K#eqN6?aTYC}#S7`3Pp>={8S7#>gGLgT zO?W2J@k|^&!Y!s^@DO4~ELnvYV^+~jnG_h>J_L3xLpL!DcEr##6C7Sez(NrQjcTw5 zQ)Ym54T|Gb)aZ#d5z6t7_e(natkl9CF6s>xUZ9c#6h-0WFtE{bIi0-*Yhu-j(@}A@ zv|3%^Nmlz%EJmG-yA*>qu*KlmH|)JlE}HCtVpRCl$*O4<;_uSyUFWm6KP5E_e`-GH zzBiGP8Qo=Mf3DL@si=JX9tbz4U13$-NSrk+$i1hGf|xMgWf*{7kzqF!@LVh9Y~9`F z?9UzGMnFYOEn62TA(jHDZ$J*K3s7n19V^B;d;1~_8*F68p(~=pXB8T*ul^k$9x39kk`YH+92H4z4iwL6DSO?=T9jag$*cM%ig?g($OT|muQht`s zUT>r<$g%+A4s-eKKn-YqH=QTB#UzQk8&;?)C6ps#l8zQev2LfwQ=77a`BvdT#tvdq zoQs{7x0sucN_dJSMIPLMr@I(um)wSn%xW4sN%1%@@b%n4D&)dLV>GX}YDLlV`3jyU=uPtVAQ zBOazB_6ZxIxm)*rbZ5=dwRHepQS+7-C_|+tOQY-QfcA8j&Vlk|G!2yv*aLb%x*!s# zp~umIg2@dXIKvt#nj{BNuB`7~W%r$}<5^YBp10vy?a#HkA8U=@x~8vP%jc~1Q`i6E zZvE`Dr*%0%IR`GCLzT?o=5fT?9%Uv+o9?kDXW@xmB7cR9Fd$1rhR6(2DWX%xB>XSW zR1osnuH%ASx4T@R0zXX^SlqeqVx3Ok5}aVs{^6@Ac6h&hI)=h7t;+nKjf#prz)Oh;KzRkc024~B=JPB?SgIdoOewkROJ6#gZ16&YJp$&=*I`XZ zOKeK3u`V(@yRV{%U;4w+F_ejd%IW(VqQ41dHkq>gAge#ztHt#c3IXUInbEiJUA`1X z_7znx{RmYSziwW9?yn*Q<~RxP=xBfo!lan94?sD(stfn6eOPg6fPMFdE`DKP6P@*<^UNIaU_$FBp(MByC_cw&N zF1M^TmW18XB9DU}*?Z}JM%H^?_TMBh2m@y7C@7<1g14&fqJl%`0Vd_xbk(uLZ&8^8 zl&5aA$e#ri10{HWO- zoP^jjs6+b`I7wkho0Jkj{tf`M7cImY)XhdIA$Lj2F*`yjRL{mPex*)y9sHaMTs$S9 zgOLV+3xPTyO&WtXcdJAhfoNu3G`nP$4nZthrb<>1ZsuLkkRGkyCmUVo&~(5zwr$9E zzGsBnT03JVnr@dNZ+Wzk%VRVgHg#j#ncb}&GUrPoF|fElBdXJ z&8&zDV5FJfSs-F;VxdrYOUQxiv*_H8Ordyv3N*cUb%IM zvnD^|uFq9A@l4j@;^MqwW4+4b12rTx-l9DdjRU4+QxihqYB(~On|pw6sZPe-$p`P@ zf#I1kNI66WC}Ywv9^+YIgmy@|Koo__MZ@$`g5hvyS048LjHC8)ATXAx9rhDKQmL^3 zZW3=_`4BAYjAWl3CJkim8|WH+BVAz)VSvY&vDI;kFA5n2Wo5j=mxB7@Mc(5>mrHr- z=w@r@^Y|Gh$3fN=GUXtv>FB|4SR%uo-qceUd-VZ~e*_w!0WbFXzVScXt-C#Y#NT-K z5s#vHIBC%`tDG^`dhSj}hNSR<8)^z+j#HRaUy(D`<<55qXCmoRlz57XFB(XIc#Wuw zgLwX)mXug+$nQss4$CF7iD%h7=0E~nd5bSq%}t<=DLzSkc7UISrrChLsER<1HWr5^ zsk{zBu8SoqE9LOZR(U>v^P<^%u(}bOJ5iV_AU0C6V^kibyMSpt8 zhQnGy)^wb2Lwy5cKLp=^N0$S26-g5H>w06o7M8;$4rk_k@4~+LHTRd~OXN#LKJIU$ zz`wJKf~N!s)Wb;hu{gn8QVAL;Yn1lj@W!Yuwb!!qSUuOAOQXR>iNSiLG!7ly!U_;L zwYZ~0=fL(IAik0XJc*>5(^uZRudHul4#X=Qz8F8}{j_ThW77odp-{V@z<7!dWceK6&;XOHjm+QNuEZXA&JZI+4j!1)e;cjb+(f zx0|)u(#1f;ZJ>+mns9ERm5yy7$As8tsb)^p#@^% zgyTJ*Ue@!)0%t6l7A>95nv@|T*Jy0^7E|>+dZ0%QZ{+c~^53{CE_M|_Q==Hpm=z5p zoWm{omdwX-rYNPRCXjcdu_50+|7^G90beaHZXjgTosHD6bXBJSQRPvUgY3Kf(jS&i zV8t}n*1oyXU8B3gQlOS@^f$S?vBBshn}WOELXd%cR^%39LVo<@n=ratnC0`HNvIpd z-AFW~(v2iFJ-9Ih9R#(@sw*juEIT;ak>zJr+*#wJkyyXT2E;aRt98!3e);T&_x|kp zF1h60?;dRjNeUZ~4c=tPPu(VqK8WAnV51-xn&Mz(3&aZb8R2x=xvaO&X8oG>J_li6 z>PyXw$>WpHDhu?@PxX3=i#5RqEmM&tc#ZiQNLb z&BeiO@D5b}hk(gyo$YBeHKP)&1i&~uIyz>0>UF^70e686aexBC#l%JEuoOi-XttRM zb4R{JqeP_4|L$6WA}Rf@>&bk6`(4#EO(tOjoyn`d(r3TxDN2;%ZZwvL`^9*^`I<+U zq(>(kUIP=EPJ=qr_he^j935a01=$YlJkmmSaL(NxB#$oJft@Bdc!G&}72Ri+&U4(3 zRnuncIBWd&-qfx4ZZ~#66}*B&md>F|c{xX%!_lXDtVvmDVizykj}-E6!m>uBiA)le zC<^6khk>txS?!QcbWWGu+(q55r4=g9Pia}M39Al))r17 zBcogh*QV8A7Tq-|Iw=}z!NT{{Np5)9DZJVU6&`c85LEg_J>>&fE-?_scWb*C$PRW% zphF7dKt0i2NBIRtk3s2>cq2SJGV7UHtc-l6*DAeTIFCv67(&fgDwY;_Bb zmRsXTMn^|Q#c}~;H;i$E8yI2EQ{^2G?;>RQuya6w({tcGo%Uu5#utAH?|(tngs`K- z-r8@BQ>fxs`}xLayHIH@lmx?Mr^;{S(TfEEX*@AESwTQgfYq%WaN)v*{z^>vhC^9G z^d!OF#Pc9L!BLjkc~BcE({!C>bvhw&T=(-nv*>=tvT^3Z#kmp~m^}7j;;DE`Qp_!w z1p?VTuVUjA6wv`C#8kEgbBn?pYRckBWW&PF43>jL!c(eg$yIsuB&G2c`cGJkF5UEsbvr2uFjj5GA zpw|J4spu*lmD$)nCPB6XyEn+EAu&`uOV^#V^)67oSN;2}@ylBC=dSHz*ZyIx^W9qa zn{4#a+4jlLUYDG0@BO#^)f~F0ix$u;&%R^*#3BFu@J~82HPLaR6aJTpabfIlaY$U~ z_evL;dLh*R=l1q?y$Gpmx3$*|wdrjS!J;jFT(spL0yz?!7?3TaEwiLk__0!hE$?z+ z&+)qbk0T=(4Yu4|-yr8Iik0SOAc~9U%PlUITsgeg?4NOgT6wj+90y`fFW;2@+&DdpXP%g-$O&1$=6p_8j$hpVq%c;W~j$4zI{qEeuX|_g3 zCpo(zrF+MyxHmb_Ao4EdLcT(L&=@|ftRguzaq7?u@i*yT{kFtW1KBzRvKtGRp4Kj~ zqOi~*ZctK#%nf3BCONtj*?ki3l?hRdQ5WKGZ+-sr3&To56ZQxkGU)?4l6JWae7ShMucm0cA`%`9i~l_ zEtrPxfdbkSm zqgl<6!-?42@Q-JgzI4W~nP=+3puU|KeMF#cMJh_3r&gP=Me-#QB_az>iG`!FM~nDX zkF5A5VrJx#NodFLO%DxSBU_;$D-%uRUa*H$_?hv*X~`cC8lci4d==nITty={ehc$o zEMN2^7OQ*-yD`o3-GZW z{4kZOo|j1_b>4uI!S2*$RGd&4;Lu6NyWItiN<|UngD`zr)t6U?(K3VL={xjF!dG!o z^(T#d+P>6XA_xMeaF0^5$9}#{&vmEE=x0xU9RYnqT;h9T-Y4#R;$EB3_00G?k8T>l zUT*EvO}i4ZzY=bL#ovD7>20sxVh@sF8>Eg?VKM};1lEoO+N>tS#Boc}z^vf&QQ;u% znP!%b4m%z(A%^x*x#W5A%UL*0&$k{f_M}1?wqwG+?y+HSe~g_K{_b9fU<@=o(5+9e`AB#wbcWAb|dU;v#;owJaN)4l1;i3-VmGwDbZ5baA|uRsF2;#lbr@hg(VM-36`bjauLQgZr< zm?hsfQFh)d6z4TB-W%{Snkrj`I{z4t5&h*4N-%+SX$I};vk+;r$#5Zl%qto?kLkEm zM?UV$|L=(}bnx zf1F~n-)3`rjbak03PQqyR7E2Kq8A}Uhqmke?FB;cy>3HyGfgOF{%DUX z!A+pjDW!qqspU=OBePuqJ}+-RQ`y+DH!!8h*?HokJ5MQI*5e^d@aA)cQVOtS$grBO zr_@M~r2sq*VB2lBID zB`Gc|@IqGA(V=GRs719fEftW^lPWzYB~^ah^B2r^lVa7RkMh9{^z>w{&YEK<{;eM)3?1wDKCPF@u&zDGrLeWgGFXau%L=1q! z5P(*#2SkDof%r^7WIcXH!Q4fhGL07z(1A-*9Hbp2?u`@;q#}{CPxb4`JSNY)np;eO zsFMl;Nj@x2U`c9GJBo z5T2QrFVQR!NhfCWSy&DkhLf{`Kd>_Pi0{JCHL?|q*G=fIPGVsCVOF@1i{0}a@?1?i z;siwdBHC&#JMm4zrz!}KiD)l=H1z0PVWj8qh|hjQTCaw*aZpnd`fk6=B`ZWKk~I6* zaStPrq%zfUF?w0PDfG4nE=B0|Q`et71`fNp*O#QI&wr}aCpsTrkK9aI6TSP8vKI0k zMX{F=N_N#mM3Q2@f@_FSZ+CDNmAiP97eAx5E6T1)S0^q#t+;X@*LwClUis@?60doh zkF$qAazRp+QhZo7TdbegZd0dC14$wmATTgpx(8PeB8{TifNRdT%C%kF+|7HQru9_k zY1;EO?6rJ;Hht^gPWSvi#M~Ty+8k}l9CHc_jd$@v`{da_Vn{9#DWX%am>2>#PVuLY zM4m%^dpl-Nw@-?LWkE=PYt-Mwnm^H2r?=JB>4)mY#!%MHvMdcECnibCC4Q`dkz}!I zL)btb-p1usJY}xQe`5X6uf2pd2p#@7?0Ln-)^ekZSEn3@dO*E(5Aze&g(9;FlIm0GNHrE=^j-ipFy z9R{BeY$nGz7Cs$(k_aCjEiyWy-y<8Xorqvfm#v@=CPWBL$) z0FbY_wHNq{t&-~sn^T#FD_x%Mio1A$w-!fgl-*hytx3wjvP?OF-rBAC5sL-~Y;?fo z;c=;)fKFJAxr+5+Y>@_Zo?ujb3wnWSukQosM>d>DERs4F&bY0G8M2=iMOX$A>?Nrl z#QXRY{0hXk~_v6ikBuN7^qkn1PcvunQ+Q5gLA621MXJNiB$+~dEJ-P@Po=W$eyHWVSa@mrr$3_FhhD|sa`L%3`KrJ8}_o9&H7PMFg!?~pus`okdv6l0GspRKO*0g(S!g29BCKIm^dktxmPU`iHQ%;pcbU^sc=+wXh0X7+Q=A*F)6l z7R*x(+zwi;p0BtSY;8Y zCoSwq^iH(#2~&f_9`P6dCz<$xsd*7X4@6M9UbwyV5$T0h01X)I0kI7M_l<9B07VK@ zWPBI}Hc4H_TvoBAo!d`!#avJ^vj&*8vlK;b2(Fl7wI;Apwj;v6RYph~_yoL%DL;8; zF0;yQy_y#|nrn5tP>u{uZ!M>qMmim)h-^w-6w!bHG(&lvXH5)#O-AUge)*L{Yfa4z1}_v-5(6ldGb=YA0;AEB8a`B& zB*D5=ym}s(|BZoRZH(vRATnf{uI@~DC*!ac&%^>VuvR7)$b+>V% ztGC;5*C%h9M2&2P^=*Aq+x*7oDE>7G_j&;lrJYQ`YC|4Kh1qcg%mW}MI>^`$}-8ov%ybXK4`h8V(YgM)D zkG;Ls|Jdt!{odf?-`hT#9q(ty``y(ZcDsw+Z+8#d-RIgKtYRNw`aX94>N846dLoiU zC3%Z>u^Dd)Lxkas(AtKIs8$Hugy3e|{B4sa-K@4iJ87f=u=~&G`T~T!1iuUnrEcW(C+4%+= zipufF-2Qc^3G#aw1CO1Dk{WnfhXbi_n&odj_Rlz%WMS}yS}vz%>zV(rAo!1e0)889 zUchbS^E0yd!luI|!wzR;p&CrN2+TCa`o>zn(O*;- zEB@jF3l4#KxM74jE3=@^-+0|CZOUYQtbk|WI7m&+Z4m%@k#Z$pqWbpFr@KA-(m=Sw6?M3$JttuCb&9rcN9Y+M{YLuxd79jUo9^Daol*mjv1A7~ua4LE8g50h!}I1r%|BteSfr*P3>@a-;R!2AxX$>X>IYRGG-8@oY-U?Q|9kMXju1#ueLKIXsc0 z6}Yg}BtzLw>%Qr5XtY)FAy-DUMh&R&Jc`Halr1IQnE?I_D5gz-HU_Z=~}nR=Sw6?L{2`p z%5<5rM7e7TJ_@_vbpy~fvK7+Ht^1@7xcGZ=YdNC?C%3L`<*|BB#5V{*IUx#rVu3y> zZfQ$f60Z}<0lG~0kL7}GQmfTib%@@f^z%$NKiBsB3yov(LV88%9VIAd$Y=&+6PZd(oKtj7)9UpY+S>L0c7K7spuN3d z(#q{4Crz4EP;j$$eY@BkI@E?S%c3%07DP^H+Qj;+BViQcchl0|kKvJ(3Jhi*u*>+~ z%zkrQTV`ibMhH9n-QKljqT8K^vDaE1fdt+gkJs2#_{)%ric|H74*8igWyn69S(GB3 zA&&G$hG8g*a+}M`+cJy(NGS6G&gambFJRfSHCA(=96JH$O|30EABvG1^E~_(iJ@1L zbs&%a(q1lWI@%hbqON*1DX+{oMTc|NQp+oke+(X+T*||J!?l#XZ46eD?pZx7{k|H2(YEP}{iw@StBT@E2p;LiZbY`U$O_*g{KO zj*-WPgEz#-eHFS+BBxGbTgo@cGF+L94W&NJ##0*Da>{XH!1WY z@!Ku+PMZEi3WL{);*F?%G!pQOVeqEI(B!c4?yAl)p;2~*ZJ^f5)>z{Tlq^ zcF`sdQ-cg?yw@b)BxjK82lrUq;R8Vwppi{UQfA)PhTG3XiI^gprn&XlpA*5F@xgJn zPkp^)qkW+nJI3W$tT?YZK8#DVB7R{r6Tbz8AVho~3-qy0NJ{`;2^9VI;3YfH*>9IY zxzTLIIWL1?77qE|cxU$iA#-t9`W9!;#g%T*a65^SeIKP3bi|$}jq`AKW;_0c^V1QZ z|EBNuvw_~>4}bU<>uJTBPydp^FNn!MtR*Q^zDM%n#+8t!|1>2hQhr$SRh(VeqTj?> z3lNqe0v|z)A*BVA5Z`R-B&|L5k!c^G!4g;}e7%F$9veB$v{a4wgNqUdI8W@cuJvwGlgEITj+eSi695=m4Y?3&3h3p7N^ zUUq9%9x8|MGXpev@%Q5;ylJW52HsFTVWz}f9iE}QUaQxLeRJ)=>cX-ccz_4Ebd5kX zQ){PDua>WHGIHmv&-)||Vy7LHbidH1m8$4u9>5xg zhxHk^=YI{>|F0kWS8VV!$zS`m$x|l_lc%1>%qr`ic6L{`YAg2pKd-Q2zki%X$R8i8 zXs4&G1~aRE<+_YLcA@7vWEjj#XBX()i|q>81}(=tFeV5GIk7y7Cy8B9ViNiNHi({H z;*o^;BIXxGoCw=tNzqbcRtm2hCsBK3AQ&@Dtt%bdwKW5~rR^TF^A7i#?d|`@R;3)} zShGHma>%ljAPp@59Qd-vBuXLkK*l0?2`Fj z)?ijxpssy_Su9zl_lo!9_b6SQB%4BhiYLOrGz;Dl^b+Bc0xDL_IBc!!*m)TY%JU-? z{%Wh()$NugY!FXMGbtY;?sIo8zJ?kATy0FZo;6F&EtnfHBCMF)w;^8{l(PlXbA9?&x}35-;BVEl_!Y|Fm3vxoPS}yOUvb-PT4b&;I#A+w+ZZqRuyBw6HeW0? zB@yopnBdLlJ^hKq*N+`&o;G**$4DCo*7O1tD1??qozQGA5J3?rC=f6OH~Th6ip}rs}J954UUrCnZz*rbL9!<4l!0;zGS0M4SZ;4^}c(1vIqYnD%AZ%ND$usuBS;>is0g$yAZK?mVx

zqB7ALV1fn=jZ#{iQVZI088C<8n=me;dz&spqvh|HAfhw$W>g+Mu#HTe%DaRB@mMDh&}F0>SGh!Dw>=U653Xd-|V-lS`I~S--rrKUDYCVl}7!IR9r!x|)~lZ4bJhN5mT4VU;1) z%L)%vZHT-MZ&I@NOrzPU=kQNyve@sBUVx&klu~6aXbtN);RMlv^9%d1B@wdE86+VTdTNsvuq*E(eM=&1qw={5wH@!+K`?t=rkS+6ZS&PZ`)3gyo!!(W5aayP) z;ucGTToB7-(b^5eU$%#BjJG>vrdr{oWiD3gZY3TTw>{<^I}Lv**epTwnYBD9Pz990=8KCUcWmnbcBc7@5;c|7)4|7`WZUZe@m9 z=tj9t^yDQ6C%drfPHKmAfQ%6A(I(YSfl+|gE?$sjMKAx*(ZZ_KVi)F-H!V@>GO-re zxnelA05Ln8nuI3Q@~9~W1hNtZ7Y!Da$4T5+K?|U|EMzDG5)K`<(cYp+!<~GtxSiMm z6NaA3{1<#MVxH)YoK<-~^)X8eZVpxA^7gLi>mKOplEPCnKr!V}$AzMGtb_CNO^Toq z0>-`606<}Op|wsKrY?e3sau}oI^A83BB3?}&qx_OPo~4fZmer8EUXx?EMB|BoQS}t z=73g-?$;!J42AO6#eq>Vq|WOFPCSmHsF{lLz+ZRP3@SWRQCUVt#@Dtuhj>9pK#Jjk z2M%p{9)A-Y_85>Dv{@O&bmmI3e+>)}k|!301dyXBj^pk;lq!{_gA3!#akUxw;m}fO zes3b_c6%v#q2|qgD0%(UL{XID^J$f@8Q>9rm-=1En{1)C7kIn0`D_b713K*Nv5=Rl z6!E1q*v^SBVxCg-A|~#9875zKQnvqPES53p=)>CJJ z4)HOl$2N2tCbp&AGEh|iiy)u29mvm-IVP<7ez9Uv+chUf&wNI}Y*_kIfgWHQN zHFFw?ZwKMh-&g6A4&j-qE9)Q{0Qg|LL>GWw1N>dJWXUv5vtx^^s2!iiF*EwSmyK!;F24tjo#djesHbps>}?4IdJs)GQyN$ICNpzp zbKn#FtUDiKHJi;zR&8dWQ#mjSl$H*>wc{NxBR@utHWOnUfKFLCcSh|!CrOo=BP~n! zpM~}&nayoU{z7F=PJVAsu=2A?EH|Jm{d^Q+M$W7_aibir^(M9X3s&w7)W#r(DIa%AtrK%Hx7@2&rd14*PnL_FMhsd9bpWR}64>Y!SSb0} zAiAD+R3FrQP}bBkp;=cFl^uCCTB zROGkH?xI#tEGDJ%@7B~siY^8Lng9#JGl07z0swe164q756crVv;^=Xd;?DZz<7i4V z+37K1uV~9ehW8;R5b|J!oA{1`WRNA4eSq51X(@#kOO(BO5^V{#mLi zRTsxVZ#2)K(uQ@)UNAC*wpXigc8{A9`AU9ClsV)I69?@~Cl{xZi4#$L1%$=N9Y z8IX1Qhj#G6?G^)p`wjJCf9LzpGiQgQfz!YYE$=S+rd8V)?Nqhm&`b>YYp209HFB5( z_CAxo(7HYwtg0=`8xQVo5^ytt`AJi<`5ySVOaD`ftYH}r)U#JfF=VirK6AKJ&`2$+{+QeQM^glHP4q%~1VnKid|YnE%g#!^dd*}zhvp{=W{_Olej*rSnjCQ-3B z(yW!{zZGsA;hos@z}*k5y~f6}Dayh)#vT}*4qGE)V}}h){Ms(g`@GiO<#*{3QioF7 zsHUK%BnKmU%4SE@w-t6rOD7u@F1|MFyyF`!8ms^~8cOgaq>aQ=?&8vNaDt_$UnZY( z=VAQst&4@lV`Uy1w@NSCE7Mm$rzDg&Lif$dYJV+v5XD>RB~=3kr?bjbd%+-_`SoQk zYY-ZVwch~NInFO-{lC_1pVLRomrLZVqS5UyZQbX)wguhYfUZP|Yo(_#AhV#i=!3L} z+N;*)TRDRoj=&d5k-R*VsNeL#YtUfkoUp5IrZ?K&?#+bNeF<}Idta+ZDQ0~XSg5~1 zQ}=xIMBq`f!2nZL=~foU zd395TqA0J|o15z|Eh;ICVoJuPI-M83fnMms$`WCMLrbTYd%bQiMI{QQPDJ~M*3^** z+n5*6?M>ImF_tN{;bxS1jfKk2&dzEPP~@iPdMN^(nSB%0RN^AWe!4bEN-qsd2ceHb zk?Tz_aF&F#C;l|!?p}FeyW8!~Re<~9>kG5u2PP&j%5pQ&7sR$2V!Z*?({ZJVS^{Aa z1s+MOFWujgQa#aNznx{8aLssLe6G>_pd3KZ*={6`a)ZSM85+DHK8YHQZ?jfqSIsQ) zrA4y()y_i(coci-bE0JED z5|X2QTOfqC1O3job9=Ys#V6oE3thYlIxM9iv&qn~S(J6i3{8(}Au z2y0YriA__45Ejg40nxF5ihyZGaTilJJiK71b%);xJwJ_B;CyeY7EX8&VBIvgfgi5J z6rrr;b#-;s)!IM|8CZtJYR8QdfPm5&D6Csq*_od|T$!GzP|ZEg1^M@`MH@MPhT*nt z&%gFFpYFFk-cFmVS2k$S32PG;kqsoxpkz?j(AWSIlkZJ^P8-rqHE7Y{ORe?C>e3Az zW2b)6I;T0cN{SS>YA`FrBY-WZ?QpT>dbq5Db;eXjCzKYjWZYhyDhn!wUi-W#m4_

jpk8R00c=(E9iq@X{W}*pCzW0#!KJub>HD-Y>}=^qmy-O z{=8n3R>_6Q-QsQTtdh5$w8t}`$0dx__ zvH4Xq6gwO4$MZh_Zq1pYFWNrCQah?oc#I*<%_q!-e|2E-F)%%MWT7e(hw3xd4*JaN ze5KPZI^3yhCKcc3!Gj_&$@q2+VDUA$iSc|D6+SQ$YtaAR!j(`@v=b4M5^xrcDmGeI zs853%G)Xf&0w9cJ22=VWVPt>Gb$8cw+aS~4(B2SN6i-*d)4fd(X9AOSI!x^L9c(h= z5wt1F1DzI2)!($-yS5wzYu(DhgD1S`%r+O3sP+aaElm*-@fRK1 zPIFED-*H1n_S?1-ZqseIxtG@5&9BT}YH?<@t00hsjg%L2(WA5KF>pLYM;Q23S`>d_ zoA20Mf8--C!2{K;3ML3PD^)O8erjT(pTU~ewsc(SlCmn^8q?ilXd`AsL5?y9s`a+a z6X>4S-Y(hy3s}f>taZ!#NwjX^cywXVAOR6WXC6(WEmf3iilL_OP2)>5dAyZv)p^VG zY7xz!R_&D8{Ycyz1Xdcmo(f4X8%G0|s{qRG9J`%EL@S9QyYcrNfASA)7l9pcghjR{ z(0RwX#(73l`d{cbq_nhp#-(o8(jXKDqN*sp7o7-PJ2htnS z3%7zLbuy$1V42IvS~l@;@%V62CJQlroqesv1z8I$y}lR&m@X6hefR22-lo!W>5SuD zx-1sNf$Bo1bFfl7+G@2XnXQCIH66&PI;BzwtQ?c5m>PBQQ<|kc+dkAPj^(d(Q&ZWS z`t2ci;g7Y0j=Zv5BA3c-x64woH#U}V8+eT7h?!zy&KpxJ)KB;$35S?Bdg?ULww<i)bI7HOX(<#Am-cokmbj=V4pvyW+LTZ`@dZa+hZtHn#Xl#2b+uWw!5~y!Yfc zm>fM*(Z|2iNS8d)C+F$q?YEO4X#CokI1y(=2}Bs}2Tj)#E5~2&GyTuqpDp8fMirUK z-Kee^&fell_83#9PA*UI!3L+P!Row*O?MUNO-(sdq$eYsMvLjF@s}F+xMTpaC`U() z0yJ>0Kj5GQFs326!nP&CVM(#lNN=lm!xgWzP_1ABI>K-vJ6$D)5GsOeX>~O~xBIxAK1sQ~ zvZdDM##`v$!qj;?K^6|XBkY0`sH`m=7?zie2^`zgktjN*%1^k2JU2OAT8Te))V4_- zAz|MLAr)foT3YMjN(WjOS4L!SNOyEnX#+z+tyqkeotz5gQ&4GocYtYP;&dyl6Y zr7U#IN_1K#^i+$?ar-2{RWB>-y}^+Hsv~no$0taFRtTW}$F*gC(IGcBeXcq@*XEyQ^^c&}bnV3htIU5d=8`M@FhxTlm5+eOp6Z&7`+&H1N%q z4DB7&dq7eSu$9wL0kcZwsW)oNC;pN1g(^k2RL|G@@RRNN(vZKBK-I)mHd8R*X}ND& z9wekqFeHwvwaT-{%f5T2o#tv^Sih?^Fpa}q`j@6ZR)T4$FQ)nbL%SkIM z-@WLF*2C1P=unD=>nKgs6ksV(O&R$pl)HyAeB!n})Tw`SWp zK5huCor6SJYFbo2ed&#_grF@Ei^;qJAl%7T)%i(SR}1q}Wu7a|qILVkG)evW9EG27 zQR&4>Q)|(43r0aO4g5(M;M?N0NKd@D27+ay3~eU*%6j!NbUW)1*RixD7dUQL$9T|C zD6&DiAMfmaWwt>ST}DfYX#7z zl$Jc@JN>-tl+Pj z(;O20H?;A>;cnuOE9WT$aA?{lDr>@h; zWfD6Lk~_946sGSrrQ8ugS3&qrO)1JNT4aOq7$D28`?EwBu-o@psfbaas(C6DdWOQBi7A zYN9?0Xe>Y-Ob1MZDwEIwu?2I1rR!t@?M zAVHJWS4r?2xe!XFpyg=ldF1Oj<EMI zgVt#Suv0z8gVGprO?6;77RH7!%ZPQ9V3$ zjX;dfc}=;g2_RYtWL?N7TAbn&8o%9Ks>BrzFex{g+rt-r5G#r~!8u?L9ew_*TA9u* zs~r(%<$+^TL^UmR7?g~{K@+qrFeNk(9Y$;m3LkX25Sx8vm}sepi8=r}uC!1?LG2t! z4uP}^2^cT_9xaP)oD6bh0W;K#3cLir@#UvWOzr0FkZSuKRwYnp83Pjj$kLeI}3ag zLK0*A`_oF!aB}?6frm0UA%~BY_C@&BuFijShLjmCmb&7Jv%jSuI=s_jHjD*@mH6&J zj6o!w|Kd0Nb+Tu%_n_NVs9}hCDUB*GRJpwnwq~lpiE~_O09cVQEM6x7N2X0+Wdb)N z?DY9qU})kFA9#UjIE_^^OXtnlLFHI;$OJgv9F4vGY8%Zo?;;a&(}mrB(T=IEYw)|NWt&&B2khtkbS%3}TS;jbeaT)*uLZR+JKK zx)Fj2o$gvXRQ3T54~WU=NDhZ`GopaEJ!vyqFjR#N}gYikFfG{B25922gwS zfNvtO!l$^UZM0zwcQp38_Y=?6=+krJ7xkEk#{~5*zFU?Lh<+gvrSEQWs^k=!lI2uE zR*C@}RZ#K(g=RNRmaB@u_XqWWFbKF(*Y!~Lg~!fcoWbaF z>C!8a>U3vZBbzXGg5sl#_5oCgWF;UX+=x6{PzrWTGz~NtOBW)MTFlQ(;+}GDD|)2X zwvNOic-B;=gyyFM)geKQwoF7vn};O0G6E!=wai&5)0r&>js*byk){RNSei8{7aTpv z%FFMTx+oj1)PC+qh7HJ=11~>Fq?`npFvvu3?8H!Z)j7Gv&(6w%&mSa^cf`Js*gMQo zXVo^%BEB6d_ynz}G+g}|&L2cS^hO|*SG{~ySncwm-{CromuXYT3qaEfv6EPu2@SsD zpL``U+t48M7EyFzsYfb^j`H&d`teicI(|Qs?#}8-f${g*?C+B_r^M8NEQiOd5 zW9BsG%o*>mkM-i|3W{-2it14I*2+Z^-j)HC%_=#tM+FwRh0fP|jmB8_VQ=qIXTYv> z+AwH=!b2255Sld+3h+=&2qW0Rmu4{-tffIwY!f`|7hHoGIxaC9I%c5`$qHSPRGXo0 z>t}w*={E6;x=^yKkd7O4Q0b_x-j*Y)w;$PL;Vk+d?QA9UukIx|G17;?J2a(b=j<=~ z4Euvo6&9aQz{-Orp{i=TuE%v9UTd?Uz9c1YnxbfYBVDZcAd%TXUX@}1L~*%75{E=s zGRz#_5GLh?lTgLZchO z=4<)mNMP;=Ly>`4iiBVbnnawCM-w!W>j=c^afNudol~M$q!Wn*43a|>k^*uIRECI{ zViLA8mn@}CmsSgDs>7-Bh{Fe2DzZWu$AvN#f#!fM04}RcM0sQ?tANW-%}aGO3!Qvh za6U26P2!Lb!DZd!@r{{&%WSW%ZVLNTfmF;(&Fl8OAutGl#LK4bPPy**tgg5Mu{eex zIsN9-XmTM(3<GXoB{40`_-8_7^2TsAj#Yox0>M zzr=CzZ)sKeU=puZqIIm;d?m&6*O6AkPSVV#Y`pTo z;ne=_OA}^#f`*c4Avkhkpn!tZZ54BAcd@r{Uf{p71DmXsi;ZHM24?{8B1=i|V}YI( z03v8!`hY=7VJey+Obr~Dc>Zo0=Ukl!NzoMc<%KvTC+Z6u?(~`*a54Y{$>R?ikH=NG z-N|lX@qY5DEQ*;9S+9Agb19k}+PD=N3{4`^VJ1=96gQb$s(SH`vmu7dpBWd6%E! zh%8z_vIf#H#pGs=23*Vd#IRJrG*`9l^p;8&y!swLra1H)1k4$y1kqf_2sGqY0daJw zg5$QiT`IClpP&}a3S|lwrBrBu9o>LEOJ1t0l~t`>upFeNL8pu#c6-Dwt9;atmG!#% z;%)O-P`6?1T(syhUB+>(_NTgH$*due4$&Y1?{m~zTY34bnUHBE02m3&MhBUSZgH48 zS=`~s&6i2j(Yo=hB3g}>YBahb@#o70FK_LIs(HxHxU>Q<`WWYl3A!!CV_06mUf_9GnqY;C-YlGT#I?KpzVLdWrg(dEL?p+E&ISUF_KPuOI&<}J|4sVpvW96s{+&y=`t#4+1(1eS<$oam60z5M#{C=Q7ruhiuGaB zs7&YpiR#WeeU**8D#f57I73&@prY-a-(;v|%HV1WSG*zni{`|{EEGv?sg0c(m;R4} zG}ZY9|0j5$k@>VN7Y%a;v7{zB3mTEV7%J5;>Y@YMLdBfCR;L!X2n2~_2ce1F zWsNOj&D$LLoi6amgB-c7r=0REB2T(bf!Tv|-2R*ux`K#q(X28fK_;t4ff#Lws9?7c zkIa&n=WT|Kz8kfGD-a{#TDn%hg6fx5Dn5+SQH}I@9xE*Bd4pXd@pFim#@&~pLocma z{Z>lYKZ_tl+z~OSneD1<8p@+Upb;s_mr)0)s-9FIJKFpVzUwHh3MH&4DmH3T(Mn@C z@_C|_mtLIG!@Dd#7<>b;+cLxp(;EOaC%%Ivzy&M?7GXk`nBt^ZhwhP>MT*aVfWKQ| z!~BcmBGjvThnmsa%1!M&@wjTLsc^!KlHYw|zg9#fwAcj`(aZNKg3E9<2~A5D54W!y zo{?oFe0(K)y0Yxpqoy_5Ac~y#mojZ>CoDUFUY1Fbb zks&Sl1Xu(NK%{hYbzybm&-$FV^#I}YGv4Gi`pxF;=BTa#Yv^AtB*-{7nfIYIY^%

U4V#*FPWc*ewl!e26h^qvbcBUndk2dDiOXxy*g5(3_z(Ls;V#-C#{O{$?<6axGRAOP1zh#npR* z6m;${SjxRp4C1CK-Q-`c@)P~a5jdo9W147%Tc}L->;3i^2IE-sK`f8@ci-0OltRcV zFgB5u&77WEb=`iN)VE@>z~o0LO#%z9j@cPZz-c)+ebp6GV{#{#uRN&Z?k>v2i@n^i zRM2~*Ik{a)_c2EPM*&nP1WSl4vVmYa!YrV$S|clKVbOtLj{t3l+3LAY^Qt7fdsGy0 z3#G$eCWPgbVS(dE-(#l#mD-)$9Xc#N*d-w@DP-SWVPPS6+8{{K6a5aidGu2b)wES> zjw|<=2q^hcjNnN}mW<|`BnHh$WEUvB{zNI+mx>LTH`Q)hdF#yc$onnRu9(sEf~plY zYE^=%7jGp8CBVD7!JLVi{QKXxVbdqK0iI5AcOT*jNYg-FCe%W3D&EI^J@@PUL;o&g z1LbA(ccpR*l!GS}P?B7bTuzXsDi(Iefg~%zlrgaTHR^GgSU8*YUj7Tc{7jfdhkF$V z%a$?0gpNiZ4GS}XNjA6we6|Ja@ zS*k)UylsYdyJ@Kjq`b}(y)7?-vLg@Xb`R+%fJB_A3)9l?1V%Ox*f%lQLpLkh%=b8A zyoUV&_yeoAI7KN%FwXu3I$sEklxwk~Sn`&49~qGj%P;=3cuD~6@-5|6DF$|h3W>jL z1aN82d^(xcsd4a>k?gmxI%RC266-lwQm7}KWs|IT`iz_?rm%}9EqcNgY67eYkY6%! z#Tv#?nk1ew44I*;DxjMO_Fpk97!;=zjJkbKG{{dnnN1>c6s+9t#ao;RKyKMXn*rT8AfF5&n? z$}pMRF?1X!R^7s~ky{oDdiNp|MP)yfAV>)TcWH>2!fFbqKJnL1+X4$}P*8t%b%~jtM`F5CD|E zE6?kEqfZ{wBupKAvPEyBi4~B-aSswj+oUZ}Ki%NQl0o)rEho8d58vca{@%!Wg$?7) zcN#r(hPi#b)(RDukFwyMfe-m89!2z)@@oSKrVr}h^x<25lzeAg#$j57nZFFt41h6e zB{R!XqeBM(j1dj7t96DzG%->QTAV7cdB?fsMQ=J$81?ax4U_*VD4Z-+p$?YcPUeZ) z?HuM|-s=-RLs^WzD92OfXg!?3$OZx%xKEtn18Qv66%oF}{$SuKwg{F}33R>?7%A7{ zh+=8is+B2go-$lsm11DWNYh=w9-}Cg%EnkrG%cwri9oJ#xpy9;K8|Q)dHo1_=FFM$ zC}f*)@z2>PbrLl0*B*+{7+s)BD`qc1q}Bv?1SX2iUSWp=;Iv+1>mpcr?VNnJxxRF# zFSn}ht&VPMEs9y5r8*`~#|ARD>}Jt{5Rc?_%Nyo?j_Q1WDk)Yjgm1XOGSQ)Q>^=6A zAM4pKR~t;MYzKih%qt{w{aoq=iJQUfPuzNtw)q;j?c~Ev-bn zFbbyuN=FAwQ?@lSPm_5ZLx4;(O`~@4PI6Eo`lIFIkmeZ>;Hf>~2ue^x!lz`mI{e(q zLdKms4y|eU7GGD?1gL^y&phW5JAg{%br#WB<0eW5EiXfd+_8*^C}(_v+q!sTPGK%_ z31y=Cs7XjK9<~})-irHNx1g}FHjR1PE?D@QVuA|b0Kx!veMpoESX5&Mbo+3^^0Wvu ze;HN)z!^Zjzv+;(`FUa4#;pt3y9ODk#oia?`OmMc`Pt0R>6dCO840D*Ms7 zBlK&b#b*8ioaE*o=d?`^dSp)_UfSrk@}MoxF^mj}Si>XSdUL?wVn{( zT3HEYA~@4WmWjPf#fPzSumVHb&I#x02GA|^LKbzz!EV66gn!`ysgp(R524*MvinMG z8o5n9v#aE0l}a@yr6OKFfH`=|X^?;?-N+IcD;*o;zh9PS>SZ#ILkNN0%J0Q14EWZKJeI?uIeb} z#1|guR>)puWOWyQ>?w`4_nhwaCfcEbD;*nHbNJ3o^P3(%WPvuCo|mn16kZs#3EPxH z6JRF7QZ>-YC=6#Z8azD+bW;k`BJBKSAdFEfIp($jm?Ihj24)dOEA;FE?CL$uV^#O; zEiY=*iN>gphfLV~PeI{jsS0(OTD*vplJFPshe-R zrn7;-wCnM&?I{6KSl@g}jK{D)IE^+ZL*n-#TeJCF8l5i$M#{D5D3-kE?Za$$U@$cK z)^XG158{q4rO*`L?}p@7DF$|a0ky|5sb?#UVlG?~Wj@HA$IuB8>|Y)vgy{+yU5X|X z;c)~+nbTZbX_Z}pmlT-JGzgOrs70tm17|9cNKAEHMs!R9i;2Lp;4~;atd3y(cE|1| zU;}2*kuUAb^4gOROXzXo=pZr$MQo!>9hXJn)~!d6cycU^ zQqlM54Kv2%^ka^o zF={2V%Y1{wfDj`Zf^J{)z$+5JU~h)K<{K1&emmnoQ2Sfr!A)v zpJwC>fl9d+BZ?)D2`r_Eqg;5(L;pMRa%&@x?Cb#hkz1u007TOX6DEA?SY(EBP>#}` zZjzkbB14X!M8bqOf@;g*xgqsctrUW+M0=T76oPbU7y{IHH;J>eEadK7X()(YHW384d;1f$q#C`fe7%%nKoL(KR*l72XMH7VR$Qqh^&oLx5 zl14ByIy?Qcb-R{Or6-?Cm3iG&Rl`~4uUPRxLhE)aObZ51;A^6rOaW|ZL5NyluJBPy zSOcPBfeCBWN}&?Q7Hxp0wqpa-tL!>;espIk~+2` z-LE9zW*o$+VkDK*l37+MRGiZa1ymV<`Ap;NXFRon0yc|NKpQAFYYW^tJaiAFLoh8$ z9Yhl>p(pfA5SyRQW!L8u*jO@!O!(Eh7-(%JF*q`!HV?ABs2Pt}gxrO=cT)}UdeQEc)-d2Uu zJX4vyRcp3zmvQ2@ip=&k?dyt(p>og>Sz7{RAdH_Ls`kHa_1NRgF7V8tJ^Tkhm=Vvp^B|#@%2uNMQ z;0xdRl&WfumT4%1S{TY#2Thl^E?Y2s==KltLB?4xv^SmSZ%K;)lwVUerLYk3IR(05 zj#|l!xpDJn7!A~jhB(pVI5{0R6ncf5Zh0#8Jf^ziNgP{V6njHA`WK{1eW5z#8d`#2=tRHu6A9)%ea0L5Ur^j(yG=Z23M63waLY>){JU$0#sGTN=28-2Q|>uN@w4(v&}s7KCJnmhI}bMp zAdN}6oQ$1a!Q#T?dg;7aY;j$5-S+L7a00h#*H|oVK#iOQhh2sMpND~k1-qtaa*bgQ z_z7WuEs!#~4p??3OGO(VY0)nuGOq~~5`_Z2DWUoh=@BskTi(3!)APCzl-&itgk#g`DuE< zHqrNh;gx#;#NG&JiUu5}VnZ<$v>B6UrWH+t2wceyEkRE$8-)^rSx4OXI#KWtc2` zxT#i=TF<-G;4Fc$B@2U4Ht7uqzgDZ%YLZyBbDMf@QLe1t3x-~pR({BN<;d<%jmXi> zm%~}zf^+#lc1^9+qBe#=gT>*e^F#=P zASr!Ns#`+^gwP&i@#D~579*w{0oXlPR`m;G(HmGd6{^~bh&8q1P}am56|}+&g`kbt z17-*@LjWHU(C0YF)sRwD%R^RIt;!9BVqR4}m*y3V>F6lwNEzxVp-WwUU$iAy`L6vI z6R1h|0xU$%kTNL|e+dzs;3aDws|TmEH>6$;Nnk+g<e4H9n!$Sa{(nq$OWg zc^}XU&tEXGxsqZ(n|SH`=K3wzv6(v5(>J{54g1&`d>x7w=U$0Fq)ktA4CmE(N8oHh z+PfW`It#KvEE5})zaQqa{GIJ;nQ5t-tUEEO7cmBt@eZ!%HlLh1ld1ryj~ zttQk^6!ahfq9|AsR8veWz6@;YV-wheYbU`KFd;6}P!Ju@ zNTR-^3XBhM?aS*JHuZwEv#&#ZA(7+;dNkM#0(9DBveHPX$gn#?E-T?-k6G8FFCWe} z%V)>ub0tIkA)R?8U8m84R}OrD-2c9x`!3ptY*bR1pW<{*X-~JFUq<3g8kJFNqt3dO zDXR`LAF|cw#Ic=ZoReY<2sFiJ|LB$(+>Rac)77PsGwESh6H}g;3*A;$0 z?>uOqak9|O6H#QgG0eQ~7k##L^pk=65u_EgLe}gY5^kHs7FuS6Tl!lr&XTl7iLLpU z1Hg}N+|6Xbkzuz~xBmji*bYx+QRTC2%K{lX5MJ?M%HmG2cv)zWw8p{*fD~tZIxiH5 z0%2JnWjVCS>lxWWIZ!N`4uW`&kwZg>L}6JXrN+h@0_3AIO%BA@RI1#Me}l@o?V30^2!R6)4)y}qWTe=6?Z=(jwJRu3_Gn{naEEJ7 z#^)Cn=I6(=IDHp=Bciy0RFe_D-xuU~s zZ5|xAy_>?-M$wvgzoK?vt^`LnDK_7{(~0FjrV~FP8<~(hF^KU%=czl(0gJJbS;i4# z>)+~a{YihR$z+o7^Y(aIlsdoyN3*<#HszN4FaEo)`_6OX2sf6*rCKl9dcHo_0>Dg+ zDa*F6Xjl=gv#`2swJm|*g1<1{0gUBV4mNR8Aef{T_{JtpIKp}4K~fAx?Od7Ge)coU zF;la2K}Uj8kPg98#(|WiNXUmUA=R|ihK^toFfQ^5U}Fp8R=4+(~1++PNPR3IraB(RsVPwSQu!J0p8m2-9N`|0U7J>d)29M9C$ zWa4Z#m&=AI&>}78OKL*w47hE8GmRI2k3D%^Jv*h4i=w=JxEj|{ba40V@R@b*=Q@vn zk>{EJ7M_H|W#{K}9rh`;a#auk$GU&5$ten_unc_S3-31V?b5n1v3w{^v(+}Xewf2G zrK^SAOzc5K4#M(S0&$L$S4a`eHfZcIaZcO0kxA7MYs_}0!M8iht<+GOE?ZIAuMq(l z@Mj;wrg#WeK~Uew!P-cWj{}Cv^C_GnH5$oCKDI0c{6CP zjiy|2IF6~bw<}Y=7U34VK5j}Nj#6;UxdWM}6&w_W1$|yjgeIO4(U1Iz7tS}&ck=2% z@4c<9BmgNpDxo6DDY_Or%6$T<3)6LM0GOtU7X#T)xt|o$lEuW znxw99bul~q{WZrSiF}eybi6`1meOp!q$T?=Ln38mtf=_0igv8|-4imP3a8l5A(>a~ zao}!?$hjZCv&$%Uoy9Y{@1i9#Ov;mRQy}H?J?*gC>{~J72)re;hRUdGLl8v~u0W|F zCTeWj=f{?r(kxbYc&Q<^^~>$VbwpdozdD{nQh->p`Cu5Q6I6Oi#poSdJg8x3YL=Y; z^QN5l+Fmz;@KRt+*m;;&g_}x`MyaAE@M1wIMy^AfC`v@)NNQEDpr5aR{_sI2X}L8i@mk(XA9vH!u-dkS++sK_|$DypDa0 z91h-sLO>d;%t5`RT#%YN@I#&MZS}Q=Si;RGn_@Dm)M8$DoQ{$*5tpgK&5#Ddkf!V^ zdnIrcWXe_qSg0OUg>B{hr#tR8PGd4If8Sxx|NJ3I&LlILcqiCD1(YiU{In-&Z3&7b z`n3k*lzcG7nvQcnj6HdJL&oNE(BW_4WiXF3_c-z?r}Wr|9vZ*mT|7qE8bvtyIi&Su zf=fy)0|d%x(~3^XS&_Res|=WynYg*>@Lq4}Hg>)Mf=M0#^_pTvOpkTeJ^ zzSsr{KVqHuM7zk^5_B07amukWl=W}9hD*$Q{2u+ko~=Ui*Dxt4BiBmfKjQFVY2dYy zyC0I`xQj3Lw;yA}i&oz5F}n`9iZz{BRwnq=Qebz-L$xJ;2Lxlo5&| zv0#o!LV@To>nIz!RZg`~>K8Pga>^}z^`G_|UiuTdpO0@FdfL<4qKtJ@sjX_sVhTfr zf)No|$pCj5CvbAf$k8YA=nKgj#sNDlXkE)6xb?F;Z1S-x@VR7^Ep(g#Xg?0DDBDeo z>$krsL8T!WJZEvV3%f-ee|5~|{RO!al*h2Bm&tGF){pzRUto#zOZRgKU&4h2n3C4# zf>e9q!iK~cIxY1mL10{DUyOuhABOt%#N!pEVeLWs%g9MEaC>;P-u+7M6DCtXu^o?!sPQubCBHmhy;Oqq;1m zT{%H0Yp0{S5a^~Nhj*z2rIA`3R2P!&_5Ws6$fkom;)2fi;Qee8`<8wVnKu4TS;)du zVD)f7y@iFjDcnMCp|w%ywQmH$d>Wo}Dn5{vK}z-GRP{Jr>ELi~APllIulUGb;00!% z;flRY=4%l?D&caOLrRcG9n6$6eyC;*js$H=8L%BmFp(+(zHS-$UAMBgDwmdTrD?V{ zFIOM^|4YA}r~jV*{C16R(e*yfA}5h419!QHkn%I~48p`g0zRqy@35%QK-?Zt2xoU` z=* z!w##`)P7ks6V*bzQzUklCZM1U6^csYTEIYDiEJh9j#cTHmOfjkT%RrS3v@z*4yI@I|1vT77-W>?8x^#7NBIZypLd-#hj2Dj=^!~49qtW%Q& z&RjA&22Vib=*tq4U&_pM?yiq+57jC16PO+_q44zrDyhcV+u>I6|6%EXfXNP+;6U{| z<)*_BOjA2lV~3e>Z2c7Yd_Kq}ak#~9%h?sFy*1U+7sR;*-#r#|p}{nX*mO8H9Sc;< zMYJ}HyrW55nZxxgSgK+(n^N(P!GjkwuN58OJ6C_)x(t)VNySXyZ%3EtQ_Ubl&m;jO z>s@ug#J*PodLrmBr%Wa5OoKY{GFw&)z{QO1>*}dVg>i6rV6&tY6j)`>KTd&QXJkg* z3s!JQUpWaC1Bg*^yoy@xkv6xvDB&2_@wjh&B^Ts*;M;tRuMBblrEpW=avX+DCOb^z z6Y!_$q}0bG3Af^-Q}H{+dt15wXW1(k{7~<_^vikb_t}qUAKIVlQ z@V$@`IMK0oDt>8s>rEfL;^SF5m9q_06=+R-T8vbvB< z7I+PtI;NEdaVelHoD8mMQtOF~kO@Nuzz3O-pPD4%kiJ%8^4j{7&NUXyae~4#S6?EV zcxOf$bnInnWc#lBN+(@8KGg4Zn2u+ygGB$zZUmsiBnW`aawqHHKsn?u0jNw=&-Sw5 zebn0oI+*U?(KgsiJq2zbJ*z75nwHV!>Ikf|SIofJ@opZ`hq1Ki>bIF>YAPB0e}ENm z$^GCW6Q-$f-GTdEk*1eVTj59Ndd&X6;)Gc)S2wF50nDtI{Tj9G%^Wd0`i8;k?r40Ky+~+%uvKm zNV2#OJ!<;GI+r+HWbt^950>xecx}tNjE|D8f z98QwX*}WtjiNxCsn{SsI?GBSfjDoAbz)~-6g@&T0UU=Cwa}aoaShGbUK8i|Mr*JuE zGKAymgtb@OzJ^R&gT5Qmoj%=bG8)S|X&E=a+1GrR`?=2IKV0jDe{7cT9z{w>y_D1r zPfaB-85x;M-V01eAo-QZ<~X+OJjOQGvZCs^$|!5{%jU6OZKksv^J*D&4)I7CLt&q# zW0epy(3Qh$PVc=`)&>vs=sRN563MLwnfZZE!t7sHcIi&%hgXhBm> zuVrGFJ5>hiof+x2E1MU$ey1OtnT28a8HaIAK7p@dDHXw)B#kX@ENG>VK-@@53XhaW zM>FpHTmfB?iZVo54K!3i=x$kk|5X1V`l-3B+f6-g^Z3_LHbzDm8f-8bOAf)$u*k{b z;N#1ZF9Q-YPn;ycw^SF>YVfFKx9JU@w^};n?qJsuyCJ0f9go#bdsKgFYq5lohKpAT9gS%DZ~&(_xyr3}e?>y!QP+_`J)5g986S zH?pu*xl@3^IN#5*m#5@n9F%PZ`>f5o|zc)Qb&Na)zE*n_MfWu!)WlFtXP92ujqE5DVOpq0rpZBl;&di-i#!f| z_WNDH+;jhy%HL7bX0lc}j)^$=d941aT6w_4?=G?^T~tM129+G^99YaVLv_ty=SrD3YdXh$SK9tu?FiH7t|m@ zd(D~cVTP95a?O3v=7^HctF zyO`vB& zEovb!71)erSyP{nat^_?An2T9nT)jA#LxH-0@K>U)SNJQN@WDo$dUB#xaBCRyID(5 z?_THWt{z3&vSPT7IIFJ+VVIQ=`=E+%;)UCl!&g-zd&e6yZOV{m``*pH9OBjAUO=mfJ3f%-~Bn zP>%I|`}e5QoJLOeeXJY&!Zg%X$lhLMXjuA+JF0^Q+)x7@6Kkejqi^|PV{8~BQoZcx^;E2 zD6OHrhlhuoS&>Acc>=d_b0OG1>D~yAO!GYvu|nxVaQd-3CtoXzbJ_3Q1$N&S`TGVj zj;&{`JYf3!?2~Nu(#m>9d!YUhW#c^Rxc5GqAY^OSs(nHPc^=$Nia-c9`LwxLBm;cSQs9b8d3jZJE$oT)qAxh!M1W#qmNr<~z_85T`X z_j4#8C?*MX2#WFrB9t%6PA^7LRAgl)dZRxwscEDlvi9}E&OcQ}K&gnY_-OT4OUGfd zc56TU$FyD7j{zVBV9Wa~4!LzKRF0#s)6D?~oEyV0F+@XwRXWT7OwU35@WUr02l%?% zzn_}U3K3BQ8cHodXDdBfX9j?jYeVN#MI0U&w#&9Oag3!X+}4FbyR&o zD=t3dbrx}AZno)`nI$!)59mXy#`0xC3WQe*itmNvCTm>$s>ZyYYk(FobW|JQqAq!D zM(-!&evRmsikXp!l8kaulh0%_gBXB6j030?9`Ow3UKFQ2OCiudi;Mg3xshp# zLKE^$Y!sl2bQHo)fCa@S0A5QK0|xl2H){wMEaI|G6jZQ7pz})Q*j>cYm>ylaZceJNN{W+yYcQ0AU)W4k8VO6i$fPju9DYUaDxp z`p%3bLMYUEq9zz3rl8U&Ezs^xu{zuWVpSvcHmU>{vq@cXv%Q4vlkS6zH)3&YzE(ua z9&7JME8Y>i48@n=YSjCTHX3)fkaeRMoR6zoRaN~V);HaV{y|fX)pL_O+{c3sPHD?N zO37^P1#AJUvl+L}nBZxC2S}I3V%c%xnW}kP#RbJ6W8f`Ui50xyBCUKU&*iK zRTK)@EK0%ZK?UAAcV9&gv$SPnW#oSu)2$9IslaL@Mh7TEqOXBJ>)^L4%<}*SlpvpV zeB(cP!%gF<@pZgkZ<8em1;r?gByd8}p#lgzPlvVKP7O16O~1tYtUB*he4rErxd{BP z(skMBG;tayQ-8)PCBcGMaqrn z`*}(@ebRjaTO`^~j=yV=1u^+r5jlOLtc3`z#VZio!SS}Vrp%AQQb9YSZge5J%~bNZ zK2cRwQk`aG&7ypgRk~GolhFF6$rcj~_Z$TK!&%&VP6B3ALOf-l+y91xMLjU+BHf=~ zBAGPomcsy}j2UQ1C6rVrS_aBZ7fWRkp$l1*;)2xT&imk@hZduHqSj~KkH4yKC!_3D zpYIH~&JY)LMC$>mhYKURt4g+&saBU3VHe9FMm`G@#!~UO;^g6C@?-oh3Bp(bJP(DB zq5NzS6a<2$*qCXx!7t&x(dp?9TIzNPJx~1hw|md_Ckm63 zmW8Rri5ruJl9oeGR#u{g9>vdud?-jvsq|@ zZ1NxvVk2#7NKbv!14ZP)6yw0QGy9m#ai5tF>WS)Kb*qOeiTgQfk_P8!dlQlAu6 zK(C7`eL@(~tufPHksc{%s2(s9M>!-zPJ)>#)lEBnlF6`XLhQ{1I02l&Bsh`)NQe44 z1VxJl0wJI0X>-eS+Rn|okvRl8`Br_Q}~#=Tf;*sjny3qy)j zv2{lGuwf9Iq{^V{a+tw=_pt#dXU2l?Orw;G$dMi^lne+gVHbv<2GdU(nfLj(ms2cIS?AbruCZI z;7!i{k;!7F+$ST#a>n5b}U~h(8rqibYnt7;;cQ zliKg{*5Au|@5id~yEZR1aifJ9@G4W|X-CC%6|Aj`-s(_SL#jWLuxm+rT{3RTm<3OY zCPzWUiVWNQqf{CKUXr_?}ZTM29)9x-_EWV4qqjjoSl-koik)F zl)eo?+6SbsLBKF=WJOKGhkclLc9w=_t3RSBxi6^YU{W3BvLvb@!6RjDi6*wV1+s33 zeY*qCG;BjIGq^Aom{#mM%^oC`mW8g~QEP1H1LBq4xO+-dQ6JptrPY@V@j-b?!3gN2 zoGDLk^$Rt28I(yQ0tp*>&7f^8>}$J?Y#;+7wicXIF`n8~44^?ZoL&z1`FUO6kE>B+ zAhs1F2Zz@fhGY(y^mA)xz&=>Tr*b(YEqm*_xnq^sUDw}HNv(-mEnsKsjVB$V#sP&g z^@OX5vT4lz>al``X>HVK0~1rwM~vWDAah#f!D5n7=E>JPt& zMf?aJuYdpTWZ2ZjX10(zyUgXnJbwt|7I@xBd#7kL-g%heoI~6Ek`&;Z3I&l8M{m>i zZ%!hgFcT{picoq!reh)a{BPY)9zV*EMK==24^S*nThfG~puKp*x473$%M1-yx&Z1q zfHZG>R2T26bns;6xJNb+%0ZbPsgEf>T+6liL-SVqxGAunRt_C>lOn=gJ&KGdKy=iN zNJn1CGVPPwImj4W>!mbj3{|8U<1$eWP=;lB4tc?QAz>u{QEKQiU1n`ZLCT4$Tg|8K ztGUswdyZjjJO;)^vAtP74M(*)ObJva7neQ0tl8+lis z39XPo81}7mQV$Oth&;~GWZlM4ZgnVmiBw>+eytWTFJo8r5xo)DPGfIz;Rnbl#m0FC^5Ur{RwC?r)qW-AguV7wM*T(`KQ!TEh6{oRL zTDJ$EH7QM*JI%#3xskGAs(3Ql#3b@I1SbMRaSt4#91ikZ5BNFP^Bw2$UQKA(;1Im9 zVa38(!E`lYvcBO9mC1EOb`>Aq@#JhT_SN5WB(0{F6ie$+=G5g*&;y6;lxP@s#y|7CZddM+zm!7TF5!@O;Hm-Wp(YYP8sP!IJE!WEeWU)Cx5_2B zU^u<>3(38oZc7jubcNP#tH}r>VM_zkEhY__C_0k^i?Wa~q8J}szX&C-k?v(*&wF8( zjo)&HfPu&g-p#~CR0vXHc=(AxH(++F#Z0{%wt2n$@tpM#rH{z((m|9V5SK|qbY;-* zTU3-LYOY*5h+9Cx42d;5d{6Z&T+k`2ju@2&@#lo~O`An&bfRc77Ha_5F^} zKS3!f!z2>MQN}L<`q#=TUc6jRE|`kx@BzjF4OPoMqELb^(JysE#A(lmhhFXP;LeT`K zHMs^meSJvnQ*ItyW{3Heo6=09J}f@L&SV5;ND&MZwQ)8@1n-3vv7_;O$>y6R!8)+p z$faxHUbBDLazb&$yP66T)fZ3yd}x9xtoAeX(4$E^dtFo+0r9tuk=_XDt0LX=>Lao; z($f(W6{U%~5+xC&ULC3V(l0*r3lHN)TX%A6F`ZehVwY3+f}RfXa)`G@88!u9{zF1S zf+(U`D1fKJ3c+cpNFelq%-d$}CvGyF>xSDUMd<^n2P6$>P0XetvLU4QPYxFEHo7+A zn+gi$m5}Po*2g-EupAEoBUq<#VTpqlML)kPT9}i}pwCbn*<^nVIL1=sLoRfg_wl&Rpv;h@PLh?aE%@^e}rFYd2tl9j3#lOXa!rhmr8 zY(1gn>_W<+wl&v4Cn1CY#_F$Uu62!u5R8y^L}e-_i4}2UhOO*n1KtD4WCr_3iFpt* zBge4iRz(-CGry4AFQKffu5RH9UN%*)lbYsLN^va_S>=Hi-6KQUDXbXBLyw!b_ErDa zRR(tPWa3AnAyH?5LYn8Zugf&85*sl0L?|j?O;U_q$uC) zINNpGwtHRBL-bM(uS7Do#_yDqu~x_z!)TRjQLbPqbxqur@M)APQJV=FHjL$@VPjs2 zmAUTr>&GHH!i~A5B;r_M?8p#SjsK@zYIF}qY z3JJ1=A>VpRj-I39-K#&5O{-)x47P=HzuOjxtJn<{fWOxaI7`%?ECQ&Jk`g9AW!nW_ zG%R+~pT-|fN%%xGI>Y?urPsUa!@}Ctg@hT^Ar&JY_&Glxmdj$`t8=sVybgJ*iM}Qw ze@p^f6KT_w`>cgO3{jzjX(OT2k900{g!?3G8x07gMLfV zpv+7F9#4q!VUWNv97P2pAy9{(>21;fdAK!g%rGHRI^gSdn)j>;-4PUGNk>L; z23Q`_ZBs_65p*8nhGsEiaIr(ECI(Z$wi(Ra4@L@s_$|9tBzq|h84 z;W!+#!~k!kSL~q2atazJj;R$+YDa-vj>?81g|0ZNa7q-r)ffNPuRhpvuDeglRV-aW zOh_O!ckaEQuO(;=wccgG@r9OsNRpoe=ipz^YAPig}eNHg9%n2NhWVrJ-Z(iCr2wx`=f7*v;CXvk~%1_ zsuQKX-C3ksNeNJVtRKYHIwWcZa7tfGe>9wpBW+7#Y*_U&T>JK(VGOboBNLWph(l zG4x;<2D6@yExTj;ZsycaTt>0WIC0-bbDw-dLc+2E&t%xNsHiA&=9vd&CWz8`P$y$} z3P-{u$U{Z3{8&+TLTYM%cPnf%*-!{W$JAv;?ORloCT59*#ZiDL`#@U6^ZI?a@9w@` zSnXr0DMbXNIG`-f!-b~{O(~3-L$S%>*r`@^60*0cR|5Sqh|4n=bikH)XkKryyy(6E z%>X5rbySu-*a}yk-HKc1Du*9Ovv5Vm*!8?)-ie&BEJo8G4-t$!B8S9N_Ok|~OH+_x z$c$Iy$pTqt5Q>68Ity|jNcac}S-^dUNhYLJZb@cHGQpIfX$k5n3|QngaSoSnmxX7qwpE|9$v zGiUjm6E=VT5wDCog2er;=ut+rq)$X%3U%-2Oq_(29FVOBTss(CGJlB&5)o&vz8XMD zsF{h3Y86ax6fd1AU;YhTuMb!yGmxVsaIpo65x_hYOh_Zg*mjMa0E=^hdPUjT2$p0O zi%2ht6DgBsv|5i#wCnHt&JrHJU&~6-U13zlp>lzJ3HNo)ERPY#fwv?1=n#}INrS+L=wXl zt<*R)Ic2a!h~*3^ZDvbbF-8+>BN&|*GvPOVtA+|ADh;h@i>*5w?t>~kWP^)b%CdCe zok%*IX+cX&Q7lQ3qLig<+du|oug6}XQka$n>?EAUguvL8k$?iEaFU_{;D_UyjY*eH zYqc%ZC0H1#P`0XnWz&Pd5LR9U?4@m^CSXKKNM#%G6==T@`$zbn9ni>FJf7?e&^UDp zB4AT_KzGAm=hVg0*~5Hkh{rq!vq~6wsO?-9aWLmB3eUZuL;~+Y%;)j>Jm|;g@pvNs zQUoGke}@j;#-XfJAi2%h3}OHDqV!Bi_~1sXF%DKjn zr_7`{AA>jyb%vN62$hO)nd}=d^nSCvny76xf-$eZZuJHn&Hd(03%ebd>eVO66TtpG zuZmSMmOD_x))d0Ft?*%XGXPSiiNM1URt)8*3)B4|;irp)LY}A2TXa`6TIu7m2KkuO z|JgjeZ53X%kam-b-;Jqbb+rAi#f?<*!wydWoz0*3VSBdM^kKo&IS9cE@JzwXuI$|D z4bJr3ekti_E(zkOz&i#J(b1_>e0y`>z>(|D=cnmO6f* zuduC*hczE%Y)%<#&jjQECyDA0H3ifKO%^o?)TTD|WV`=*RzM!YP}X>G=23%XuaQw) zX$6w2iz5?kScs(zCX3GyBViyy%!bKEY^9|jLqa^+7yN`_Ys0Ntpgj%TL(UepSQfWB zHCJplSg^)ct+FH_$RXbsU=tP@Oe0Li`6w$2r>Ti@n4K&D>ILg(jG{t;P!wT*PHNTu zh_t7aI%hJluh3^3CFP=A_ge1!o18AVtxn zl3E1Gt0h({e)X~T@15uO!|J*cw!xfOro6;nrl6id>GBU2t%I#iC`g%;?0ZmqEP+DmKbo;y&T3VWPxjzz!RCOg_~gJJPFEVYMI1X zv{6NTw3sL24R_bWrn4pez9$iugj)>~2)M(OZfA&;)uOc)t!RwYCbc%uTBs@6(b502 zfA>8Fvv#-FlMKRn6fbh|Nml!3pb{`R)R{*?16jrv}mpBq6q7KBu0KZP`wM0M|Bv-~y3KC8##8TqqR8(L(rV120 z$<&nPT%iERyf}wc#gApNfNXd+k2r`tdW2eQDaf(>G2fze(&jn z`{IfjSXIG{5_QzvmP~@8X|Yq1kHup%i%mw8~_B)DXw3rfL{y=h`h|O z-E^w|@FJ6Twips_(+~tXx}(D}?&5xULpN^6hyTvz?&nv}+RZKiT^CMu42M5=EdA

Mbe_8z!_R%ZonmMfLi{bq!baYx}Xa>=z~7!%&4AF@};=6R3Q!8kCTC>Q0B{)AWB4DhZ#u$TnKFg zjma@-_o_^d0L{#*=kl$BI`_tZe|27qalX{@wPP4+^)o|7!D@WWqgoc8fsVeRCS+9! zG_iV&A{2uSL?}RsC-5uJW-fZ~4hymS0qHoeUAwvj2(Vl2HTp8E=DKD?ZtC<$k?CYv^Pm%BP`J z**|oIYg)A|c-_Rp2Q4}lnn&oefCUCCXsp45oiGdjP+Q;IPV{AT=j>CCZ%#HnLR8lH zV+u)QT5QV0NrnCZWJZA@%5akh6?Kw!hYp9@TdS&3Z?7-{@cz4PiJ^{M#sdB)u)(jZRW#akqBbFr8W)8X+)?Zi$iQLSHqi7G760a&`9>=|%WugDA)-H2aEDTX zePsaYgXBFQb9L_}<_Cx@>){xk-_zS=1!4mbLq zoS_-X>OwHlB>)kItebfqJ~=qeq}^m-YYj+h5Gaz4z4xDZS~+ zqP8(MM#Kai_Q_*QD(a{Us_Wnk@-2%8j5`XA&dC=DeN1XGEvf0A0xSu)F%;Ag2}dMs zfw<3LaUbyMYpk?v5YPGi^}PQ+v>R>@krX-XrG4W4kNPppK9u>&;Mt#dOiwO>-(*|$ zv1sVU1%f(lG;YnWrmVkay#tIGx-cemNf&-o1wvE66`XO4I~M6m_8@>Ly~rxeaZI=~ zGZ1nUQ5m(#t}Sn$a-;N6AUaOYF+?^C@UtneKo28J1ax!~p%Ju8$?ueKQc<$x+|vZE zldiveoY($aB!(0bDU)GCFsH<$_~Gc+SvT__^D1dft2h%S7O7oAQ@Thq8;nT)4n zTh~Yf%eO!8wTr{}R{p@+YO%$IK<#y*k^qeB%Wfr$gU&nRZBM^y%=w{gH zarKYmgUmMDfC0S;q#KN+f$v`fdWQ0{yg#?!cloLLG&Z^}1^3YXS`HiTU*NK@WfGBJ zfWo*M8++FJ6l5bB%7Ao()Q|$L>@84ExYve?UJ*N8X_u;-ItT|!*cRw}bZ!y4@NBL; zB6n*Z(H83NRm{!`g?`JV?k>6elpE4+=wnaBG05AYMMF?T`&?16w65`FLO9KBJt~w8 zBE6*Lq@wJooaEfo1TIWYYlw2OnxrA6xS54vi-HETNIb_Invtw76cJqlB&br{e9J8V zqC1^zG_+k_ICAofU8t0}&lO}oFE=omX2zd0NV>X(y0YvjkR*;Jfc!zb?zPvLQ-=~$I9Ch+xZak*c%XQo^6@CeGX1OT;NP9h zP!NUzifsvOF}C7_vu6L)J8xR|zx%n^7|wpAjpUgKFZ~f79AW6J60^YcD}a0d!no!> zWbt^cxYC3nUfrwFe$Cm^ZHaNQ`7JSHlP&!IDDn81;4CRzhc7U1q-bf4G)jQ%fgm_&t3RRb>h zXX^XwYKPwpmxV79-sv|0+Gl-^r)3O=5m!Cm{=01Crsh$+suXkJ{pQnv)xJYdo!H$) z#$WbLEOIDVXfOqdNK1GEG{VQA6TLRne_I_y-KHTTz_(2db21o3MNEtqFj}Y?FjyVO zbG>|8G3Q#rin|`>_PYo(%{qisC6m1joCz)WzaqZElkG6w z#IPWM=z!hwBw-i64=)p=o$$rxb&ax+UHVjYF#6`*cqh?(EBdX-jg2r}XnFOE;$m(} z*O%R@)q?j25(k5m{YOMO6x|A1<+4)VL*=(Tz_Snnkpm!^WQv--ZZ3Myj6q)o^oBtE zZ8|V#uY+hEpl=h(8nDQ;G}V9j3;uH5L&0CQ???Q*4gW%dac4}}cZL$e0oTdGpOl?Q zsA;HR04E1jphgPYXq2Pf^L(?5c^?)<<>MC0n99WcmH?MXVBr^oc&huI(Fa%GvK6A! zig-Oqwf43jRI6v}=!(!Vq?^$CM7a~Gr9@rLQ1ukEaM(8%Ueif~g#rpev{92}8vXyM zv#*Y{m63iK%czEQRgvzy-dpE?>NlMI34$yNFvS15>fP_m^9j02**9af?@6~H2$s3vy;W95p=8nTT?Pmk=cr0a3 zU|!Ku@q%J%Dp0vTzO-lx&U573lnU7DN|{l%7HYBOQUASXktP9Of--kEwx4IU?@qde zs)ao#rheM;i)M6F2YJ*)+8Ri^Uq*;9K*W1*CJksBs&!aZKXta5l^5&^@TmSCmTcED z@9Vk@!%pqeN|a*3cb>*a68EqFM@%cP7mWf<&9d@aJCYAU`TB*mis8>HoBC&2p( z6s)xD14&WyKHlK_4u2GBeIh1`4kT2qPTJ_+Ft*^|U5tC(`DGqUNa&lR0X)fMDl0U@ zeghDzw-C_{<`-K(>^=T?JH4H}ki6UQ46--!4Nv_+0cM+fpjKX;_Q}7vp|(X@278JM z&|V^xhw^wlp^*1fv8YHST(*ZpU0k;7@xBW7*phG186}NX`wEuVrFS+YTcu(TRKn%F z*@lcPePeVeP1kH}+qP}nPEKswwv%&W+qP}nwr%_7dB6K})|#%a+Piz!^vuS}QI;3toYoKiRF@bd-!wHu*a&r!i^YxI;d4OceP(s)E zy&Zh4oSdCkrzeh9X$KSzhi$7$-lilgBXGII)_2*(;z86tD_HOAap*b+7?BkK`1D9V zKVUNOUc+_!-a=}8!O(!uv9rE_`~4m=XWv981mqQoeT?^(BEUec*MQ|UJY z8%-n{_B69n(@EuPp)qlodq2}uZGO8q6fTU*@*=l&kEbllhPpB-jb@l4HIHg1J`8mC zls8;-l(#*hO4-IWIU2&Gsw+z8J}I*KIRnswJ`No*I;2a+ih}&cd7SaCYz^ggym58Y ziN4iV&E0#nPMMBM&y}8b`}XrkK8o?cp{mYe&LwvVF4cP2vF;gK3Y?L(zPbk0&ij0B zJYo(tg4j?^+T;ak8yw9mU{pP)hLf*rA=#c;HR_U>qfH!5u2eg{Y5~Pa%Ec0bR5n{c zOwkS@sDN4CAt~M7z4YWUkt0Du0ava>%uX2Svhkj@eA4jAAh%KrZ4m+Xg1e3~r zr>Tcpi`fL%uB*%ud}Mb_#oEzkzhs4G#8O%(Ssb_k{$3oa8fMvNAY$20DHhTGe&vpv z#01=h8ydE-IeYE!IFG6=`(A-ro;1gTSDV|hsvI0*ZQt`f1(UXS;J~Op%Y+c8lyEd&_(Dm0qmD`@TFKROwZU>ME0QH zuL~VmD4Z+dDSZ5qty?*6pyXT@^X!C3I;d*`#G3P&F8v(!eP#GBc#tk+by#jeDSWqH zoCWxI;h=_>#M(+{CfK*@(!ZXIgeh2aNDBR{`=DZ|A=Q5&A`MyIE_QD~7>dA(?UfzV zk@vaM6(ujT$2fftXz`h{uahaaL(4X6U9fKwS$rNRVSeQZ66+d5a&2B8&~DI$Uu+=M zcd-qCa~P$OJUy-x|Bjdl$y+h2`tX+jZZK3t6VDCmASPMzgQ0i;ats|p)|-~%^!Kp?T2F&TU5JN*g)sg#El;?g6dT#%FZpe_sBLmpajroacCjQ z@?Y&l2JjZ>KPAa$XoVEaM$3rY78s&x%oZ5>PE#>60>HH$5{*KN`4c>qBru*J@LcMU zU%ul$-9fc$PG6lE?qgkw6?xNpCx-`Pp*@_cLfu|#Wm0WV=B*c2WkUsw#5ZoR7Z5s- z)-sR}H?Fpuez*C8J5Q`Q8r{Q4*qXW|us#;4?~u$q#gf<1FLsR4>YL`Z)1hKY*z_@1 z+>etqstqHRo(*V9KCVxw%|j4%5f`YGOnp21M7L!3@4_#5JD5W?9_b<30Ap6nvwe}U>kvkTlmLqJ(gKe$}m{&KUTlKik+cNnPnC9)uIn5k6LC@~XnW9PJ#9Dy)nwT{ES~y7Tz?jz zbZ2+_dr?t&hGG6!xvl&hJr*+2teQaRGkjY_7vBuKU!<+{_+dg^^fJ3^)t#}FQj1N9 z$ZvTxY!xb!@uuIOdei1JEhjFX`SY0{#7`>CAxoKnjVAV%30TB=4W>hokZ2(OP_h$@ za8bGC5?R(8CP;EckDl4%ZV8)&3Y^6uhd?ZV=%|oQ!sU&grjKd03VNICiMX1Mnr1_3?j;k>tV5t_Akw z*(k;@4cmn6moJ{&dUp>8d1^eaxNlVc1~^A_O9dKpws2`bV0Z~tixk)&!=Zc|2jx%F zC36RNuGPiJho<(8MR*99#{ZObT#!uX&A4#G9j_Gtx^xs=53v-&p!BZ>2;o^Ppfs$l zqETmNrjm;c%Ckq`dJVurTvY<=cheqW&{a12Gq~p74r?KRMom;B%C6)H0snicf(!ws zB0qL8j8&yZqC{%3yhUoNRUz!>y+JP;Ib|2X;8qw#nUMs*{W0#elcB}2cQn-ftNK+f z9U|{w56HHn{LwSTz+U6as_NKdpuqsuBJO+0d^-%6_+GYmIM}&tlIdpbSHYzYuv5?q zeC(x5WF1~X59;|&P$$*+SqCgyXI+aridlwCs`eWW6aAIvz9s?sWj?mqPo?X7&flE$E8!jYnr&}U9!pX5=0!o*BQdPF^0j-cCRa^)cMpm%^? zso(usLE&6D;C6b994gBb8`8D*sGj8P58~+aiT}!XG8Xq`OK}cAvk4F*A zt;<;n=E)Ife0BT2VLKI3FreP*4I6qagU9m{@U8id&|9=F=- zQzOW-!`VZtP{Aj{>}J4fbn+%IKxQe8c>mTOOtbcK)(eET|*1Wb%@lZE;b{G!IUgauMo?FcKdAzq9 zi8>P@e5~_oalFf*u!r!|z%Vcuyy>8C*=#=7aH`Epb0oKr{hk zvq$EM-AY*UCLiHa>(({2dfKtF240c<*yuY}ta3k}z`XKl?VYqar3veMHCU$)1@dSB zyGnc%QzeE;s13rZaILZ(?5gFMVOMxR)f$+>E-<~+Jl$uA)9X!Mw@9x>2xSNu5Tz~U ztv0Z{kzC^`A5vfoc34Ai5zQBh>r}L;h6wuis^PR$T&{4gWSQ#>){k-ro9fNJfZX#p z^J=ilU4{PNu_p!$F$gjso9r5KisRm8t~#D?>aRwMOyhFVCGG~&cg=?_8dIO`Rb(%B zW|_|H7g78=6(d{Kts#Ppb-8VIJdi!IbO~fRp2_zLLQ}RFO9za$I?dm70a5`RhK8$XpWa)C!q z3YD5+5acu@CP=!o6|Y_En<&s!v6Mf`?W{LP?hqN19lzXBNZn5E6r-e8(Ytyaj5E03 zo@_#EUxoC{J6(eWqMb}rU8kZ)^4bN0PQ#F5E|qIWzHb}WuB15`P`6nZGTevhj9d<` zQnlF{yzqz}EO%?rlQ!k1ikrmlx-HShfY6PQ;Bg~js!eKMo}9KOcPAwRw~H9<(Q3nB zVUb^)2@SveAS3$-9HZ=^V2Q1?AYEI`YE?5jCNq@a8%u2~E;_dK;M|psg`zBeNGMBMC(u&z*nf%zIl@wZEhhW)W3vu+YoyBB$VPi5rb6zsEbK!p6Wb@z2W zT{IfGDiw(cSi97bZax?M9pNbna3h)H28X1irl!zgmlb?-j9Z1qwD>I{0zOlt-NQK1 zq8P#E@8E3pA0IjySt+c+=#y&jiGOs?$m<(Bc5L35|Mi&vfIlaPG2t0FU~t-G&{K*PW<72wDd4*Z6dH? zZ*9oa=rWbX+Wc0v!=r{W0!d9aY-+IRcyRh1*pXMLPt#R|4fp^+=ZNv4M|tMQRO9GS z7UJ>$P8v4=1PdmDuEXQ8%3=fh2aBeuXH)P~hT^x>rR?!?(f+-J*58Q%1(03*vkb72 z+&ahbNC#TOxr-$XOj(fwsG{AG$80YCX)U-?SkE>#hs-p_B^u>UQ!oDE7hRCC&I(Xz zyM2ubV25DRhmJeu|rnl;d(4G(; z8X!s~&KTfRF!8rS#XJmWMGLPVt+8Cow&KT(Rxlw+Q=jOgMbCIYF5U`N$x94C`4+C% zN3`uqx9f!)f)1zl$48s3$Bad+2HHaNpvIu7^&YP@dAuWYO7pDAB<0|{p%HoAid7&m zGizBmeM>g{!&H@Mj5iJ7QO{#{a|{#9#yK95Q{+F}K!D!g4MFGZSf<=#AY^XMiWTRz zhG_B6*kjFuUtEainu{D9AP>KJe61Cp{4m>lVU&x7&*tLkO5=vx2gm@iQ(0^cIoHYV zW8sdihm&RdhS*|Irv2!XOhFlTI@Ddif6R+ne{m*KLkK`2OqK?Q<8=aGKhY?<@Rl zE#6j7;ajqm76ociuL;2(iz70@klUZdFX?VCp_Q%tOF)(w^%EA_nif-*u*ZyCWkoRU zP$X9%4ByZ;tM+0mN5$V;i5ShT9CSS4Lzqn0Ei5)4%*4OQPF1XLJ%c_1+ru~sQCxoF z^)3Mc#CI=kqPO30jI`!n68BD^rZEd(LTx&^I6sN^P=e4Hg)eFd*ZarF^S9&#oc)O- zhCl)hAM&z*Z6@u6q(W9e9B|uN%*)z}Hx$6p{a-MT-Twn_zUno20N?vRo43n%u3*aOSZkRNVXalgCb-Lm3ZZdG-)ESXN~C*MU)z1Hg=+StHx`TFqw zM$n%h`vsFT>j3TbOqp^($yS@U(`SJHWpD~F;95`Ddc&womJE6{3=S=+mA(@u$*kTSR~H2#X7Gp7wN4!-MawZkPk#Tz7=kXI_6p;9fzRZsblqzfHV$Bbxgm*XVTdU z(4X396E|0L)tg!)93Ar(1RG@KyDAl3i%pZj3_t0ukp72z_lv86M>Y?{ck&1j*)M2f z$4@&{eK=RjczH7DaW$4*aN(LjvM(_nKI4dz6lFu$7akOk3LSr(tRUnF%W9rtNn{`# zIbM2)WVNXwP2w6B8oo&J?6hyqG?Y0>M7E&e-P&QXvP-a*h+*Cz?T4ytO4Za56iX`SA7>QJ}uSjD%;Q{*p;h>{wbq*366nz@#{mT!g&!`$S;=FW>eGqIYtuw z=~21|0mkr;SW_Z!AderM4w~|gLrb-Db1Pm$@JtKYOlrE*xPz^KqxLftVS`01r%&LLvNTOkC=IJP*5!h3DP<#aF(vM(!Jj z1G9NM$)frC7ct`TMt4dz^gFOTgav7T9ut61c~X#z04N^Ck2H4opa#EuAVLoggxQ;u zK}=Rk(RFe?NoOq!7O|(EE|S-~n^gl9ycdiBfyikMEJ6 ze0~L@Eo4$$h}=iUzNHI>j+RSkEYy`W*^m6F2;CF(Mr|_1Jqa1kr6gzv;={Y)6EFU{ zayqCIoy`n2lX{mi&=h7kUq@cZd#?UX+e(QcdZn#5$=;Lb-fVjMe6jL zPak}!-fzzUK+MgL0w66I5a$Z*skrpgS43e|6M|r}Rh%69t8-i;pHGD)2K+TgO2Q3!zf(+~>g0)Vqf8Z`u~H9~Cqrh$ zwXwmleq__o{KaYilD)+>DZlSrQa=cUJ9PK_QNt*}_i%Y#>NqGlBMcINxYAP-_m)2? z_S#;Xm|=|BqA(0OJAZ$_X!<&a??eyKr#cVf?LF29I!Jox(^XGGo=ywu1YPdrHdTX# z{hRL;&c#!5Seoej1R|&5jghZ)3U2CmuYZiYf{p5f*-||w~U0MpZY} zyQWv6b%~nDKdyZ-Cb?ASr9wUypH)`2zBMN}hEE>W7uoynIX{OF+CKC?6UJUEr(%*s zi9XWcUJ!!yZ;9x>8L@H2)(L8SFAC9CV(y2_hi=!HlCwWo^k;BHB=`D6_5Pa#1H&6K zs{-_J^&|M_1S?wlE!9I+5)nQsN2e8e{L9@*eDJZ}Zyip@t#d$neyb?)i1aAp!#dJ@ zEKXIU-RV%J5tK7@R}<)k709W$`aVsd76|A-TNshbu0iUDzKuRGOS>6miav9C4tH)m z%@ukpkf^wjUciNY_h;<~Mh?rN2umX=;r{obuUwEVi1#ZzZNsrbSu$%Efn>QY)R1gZ zgY1xQxggR_Ztk$&1$s6dF@exf=v-jH&Wlu?=s7%_kg)Bso6#GZ_! zk+g>N`s>;s)sy&{7Ehu5mt6aIN0|Q%v$_&?sf95u^J^BD3y-*qwHiscQsqZy9c?@y z2Wslmiy%9{j|4(1pd2d@vRB}Vw?8clZ&H+j0emY8Aih4M$Fjd8p^2TVX=Be6O5A}I zX2!cWf4`slo?u1Zvz-u*#&~Yo_Q}CPo46W6sk9+AmN{S@q8aUEJ)SKt$V9QRO$Sca zUv}E%I%Q_(>A*ktWD9oG%hdIh=j8M{<~w`Qut`y7 z`P&!%7`|mdphS}GmBKd^zLq?^`pz4YDMnJScy+CG%(15kpz5BZ4>QB~K(5Tp-4%rz zXL~N>4o0Sdo-%UuTG_ru8UMWyBaIy#PGd_;O&{jSd5cv*D!VS} z@xMb9M7?KX#5xKhCJyD^yBIdM`UF)B$*CEkXms=W!m&4};ktK_>o|MXt2d(@mxw>} zVdldF89>no%2T0M)tOc*AK3pQGA3)4!uOXl9V&ezEqZEZ>ZuH^#y%KWIUv$+?MwU* zV4qK#&c<8BnnwCkWu3I=Hgk&mlTVIg+FDk*?_JL8Hn5j$AdxSV@m# zxIJGTkNp&+<;XMY>K%=kUv@hOAqX?KfMN55AG@~E^&E&^|IGr5{<*;W$dATyPirwclBvRclkp3Gk8()slMPVOc|s1x%!@b1Kei2AozlCiDLg*fxEex z&YnPLIx^0rdoJDS+cpC|_}PHdm2%!HU48$il7UN2m|A%RO+>^dsVBEUhck?=SvC20 z|A@99H6L9T)P%qWjD=b4!q2p^xfsQAQb%>Sk3MwP9I^t1MYj7rf8hM zVXD!LmjYQBSoOFcYInD0#~F5_^dm7IttVvy9z6NpXMN37DGlICw)Lo%dazQ4%aXC8 zH}HZnJKdCZ|E32{7IWb|H2mO=$1|)A}uR&@%=8oyrWFZZCu^&355F(fVs));F=YuQ+9LgV@MS2K+AKvHhYTqIV>AT z6Y=kXk+Kp13W>>Vpw=Z^^eW|I&+S@|fA$vY@@9D?6R!uIy8n6CivbI+>2x-9$bZJH!fC~@ug+7bSczJw6_W7wdoNefAwyay=?)pmMw*Ip=H z4vD><%wD;e!s#e+)gli6J#ooz#7M5?;7u&pKP&v{zJ6aJ__4O|?Dea;`JeBaxK{g* z3&z*9+V;Kp-Lk@zK44hAawrG=XaMDx3UQxoKQhd`i_Nx%Z(WNWvxOI@h3Z|~Q*ZsV z1)AWGa0B+Ovma(Q2YZ*LFD;jm^hL5u`e+;}myLqrpQbo;=A0-Lx^OJsr|Lljggwvj z5j=DEh74r(5ra|mn)`koamjMrBE$%<{GuY-oJEF6jwiIiByY+A=@(Bw7J6 zGN5kOpr9*K$5J35vW=$?+Z1QXl*c%&pEs+;ZoZ(sk5*U~?Qb7M>^qpwJgga`*vyj@ zY|$e}^H)AFVZgT*FkzSeH;6%EU&?`x*|1_}40_$S|Zj`HG#8Pd=kPr(x1;YKc~vQulT3!HDvm_2D9MBpL&Q?tcH z_Lau=zS=qJ8eHdUKRvu0Gl^|`_J5icej%@Sb+{T|VcjdD|1g9u?;cLUDews}v8)FU=eNW-G`M<<&5JOt` zr56sU`_C8On!{f^LOsf#GO=)zN+e`GS3#;EVRBhSg*}!_3$SVce!fgpUE3d4vqvd< zaF$#P7Z+!xFobG^m(zk^Gso?6hXhUN9e9 zP`>tokT;PFH90{c1yp4pwkKYFrj z`*RT}&hX|9gDMp{RuP(M&Y3k*@fhhES`zSuq?L47Ql6J9^>Ga3V=m^M_Ft)0OB)Ff zHTQfkVc`^3!<&R`SN0ujzr8^E3gQhJtef6JZ*o>S1ES7HG?qe6>ZzE?inO1ZMD|Tc zpI)?|^MjyDNh&Q$rcg>DcQu!*P$qPrl{750rjN93*FOu@25sZdp7}FAS6njo{#}a0 zTh?zC9JENB-`ae;i@=0@@!Amd`#`tQSNdV?=ct@nAMq)4F;fRBiAOb;j~GQ`3Fc(N zXIJRmKOU~WiV`Xyc8cE8Z~9?jbqmMw1j%J*=3+k~n7rc|y1DON0B@>Rm zrc$fwc*T>GXBUSe+k5n#zi1G)^Bx#5;IXoLu0-*S4Y}5L^yy1n`q4H9Kq%ZWjQxp+ zjtr%va#_j|Ff>YfN3Z~X!oZG*o(jW8@1St@IO2RGROKy4PjqJe^mFvM8&@J%a;3_p z$HE44q6Ln&@Epq4V%Kbit#5;@Ai}xt2S~bK2{6}1m2{{s`l(io zy#~;oMe5Hwik8Am@1rkbCuJgzL3q9{jgGh1y2PoG2IFr!5JwNySEnhA${BsR1IUC4 zEH3XLa_CW{C9X%ULmSsmVWtfi{KGBxNryF%nbd|E`zf~6E5bN zd;49-qG^$Oq42j z_<%xVVUyD?j(o;D96dy+WJ39Kua<=;(YB(3Gy-4IdZ`^*py4gVQa0%dOnMG$Bw|Ap z8RY=Dls=9dA&XKAz&#?Ed?B9-U6I6&c1t{R*Y;fUmIxDBmW1DO567HH_aB%B zlKL8c9UG)OB`z&u~@mO{tyM6LDe1m_5l&XAVUz^({e#Vl@1sC3Q&__ccfmb5k;uSa{ zl(0FacG08Kk8fhGVSBxt^{3s71$;YM!c1E4@?`zjMp4nqHzV|h)VHvIKJrV`Q7mP? z_n;7V={xuzs!L~+$S7EDHQJ8vnL)EFhdx?aR1ZXSBH(Y}{-=cp-$`kLwncl_zxPb; z_qYTqcoo!zMz;p6w>hW+$;6rm?thoGE{>D)PK^l^lqbX5AYW)#DJuQaGz{lk?Ylk* z66*!O|%q8i;o92&*>3vmS3z-yW>`?4yX8LdpM&5*TfNSSPB$S6MkuL z?Kki3!VS!paYZBHNfTZSMZ!#`DRJwSFYE74HR#KDGLf_qUJ3%6?S!~HC$h4Vo56+h zR;TG#%6iO1N~IbB-M3!_a3_;!NpelC9WEtaPX;Ns4e=>~GISx->wW;4UGT`T(e@4q zt-2<0j&_*>5XX-kHB4B@P_^*F`={a